From b587b5439e96f7a5f4d54e760240fa20b680c19b Mon Sep 17 00:00:00 2001 From: isc-hwojnick Date: Fri, 19 Jul 2024 13:49:05 -0400 Subject: [PATCH 1/9] initial commit From d49f01d10c08ac7ef2a34d0ec3a3d10a709175c5 Mon Sep 17 00:00:00 2001 From: isc-hwojnick Date: Fri, 19 Jul 2024 15:16:03 -0400 Subject: [PATCH 2/9] committing before switching branch --- cls/SourceControl/Git/Utils.cls | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/cls/SourceControl/Git/Utils.cls b/cls/SourceControl/Git/Utils.cls index 5c08b581..11cda5dc 100644 --- a/cls/SourceControl/Git/Utils.cls +++ b/cls/SourceControl/Git/Utils.cls @@ -2418,6 +2418,22 @@ ClassMethod UncommittedWithAction() As %Library.DynamicObject quit fileToOtherDevelopers } +Query InstanceUncommitted() As %Query() +{ +} + +ClassMethod InstanceUncommittedExecute(ByRef qHandle As %Binary) As %Status { + +} + +ClassMethod InstanceUncommittedFetch(ByRef qHandle As %Binary, ByRef Row As %List, ByRef AtEnd As %Integer = 0) As %Status [PlaceAfter = InstanceUncommittedExecute]{ + +} + +ClassMethod InstanceUncommittedClose(ByRef qHandle As %Binary) As %Status [PlaceAfter = InstanceUncommittedFetch] { + +} + ClassMethod BuildCEInstallationPackage(ByRef destination As %String) As %Status { #define sourcedir $System.Util.InstallDirectory()_"devuser/studio/templates/gitsourcecontrol/" From b401960608775f82aa8568c7d301832c1655b80d Mon Sep 17 00:00:00 2001 From: isc-hwojnick Date: Mon, 22 Jul 2024 13:31:31 -0400 Subject: [PATCH 3/9] commit progress --- cls/SourceControl/Git/Utils.cls | 64 +++++++++++++++++++++++++++++++-- 1 file changed, 62 insertions(+), 2 deletions(-) diff --git a/cls/SourceControl/Git/Utils.cls b/cls/SourceControl/Git/Utils.cls index 11cda5dc..26a90e4d 100644 --- a/cls/SourceControl/Git/Utils.cls +++ b/cls/SourceControl/Git/Utils.cls @@ -2418,16 +2418,76 @@ ClassMethod UncommittedWithAction() As %Library.DynamicObject quit fileToOtherDevelopers } +/// Retrieve the list of Namespaces that have git enabled +ClassMethod GetGitEnabledNamespaces() As %String +{ + // Get all namespaces + set allNamespaces = "" + do ##class(%SYS.Namespace).GetList(.allNamespaces) + + set enabledNamespaces = "" + + // Write query for verifying git sourcecontrol in namespace + set gitscQuery = 9 + set gitscQuery(1) = "SELECT CASE" + set gitscQuery(2) = "WHEN EXISTS (" + set gitscQuery(3) = "SELECT TABLE_SCHEMA" + set gitscQuery(4) = "FROM INFORMATION_SCHEMA.TABLES" + set gitscQuery(5) = "WHERE TABLE_TYPE = 'BASE TABLE'" + set gitscQuery(6) = "AND TABLE_SCHEMA = 'SourceControl_Git'" + set gitscQuery(7) = ") THEN 1" + set gitscQuery(8) = "ELSE 0" + set gitscQuery(9) = "END AS SchemaExists;" + + + set namespace = "" + new $NAMESPACE + for { + set namespace = $ORDER(allNamespaces(namespace)) + quit:namespace="" + set $NAMESPACE = namespace + set statement = ##class(%SQL.Statement).%New() + set status = statement.%Prepare(.gitscQuery) + set result = statement.%Execute() + do result.%Next() + set gitEnabled = result.%GetData(1) + if (gitEnabled) set enabledNamespaces = enabledNamespaces _ $listbuild(namespace) + + + + } + + quit enabledNamespaces +} + + Query InstanceUncommitted() As %Query() { } ClassMethod InstanceUncommittedExecute(ByRef qHandle As %Binary) As %Status { - + set qHandle("q") = "SELECT InternalName FROM SourceControl_Git.Change" + set namespaces = ..GetGitEnabledNamespaces() + set tPtr = 0 + while $LISTNEXT(namespaces, tPtr, tValue) { + set qHandle("n", $increment(qHandle("n"))) = $ZCONVERT(tValue, "U") + } + + Quit $$$OK } ClassMethod InstanceUncommittedFetch(ByRef qHandle As %Binary, ByRef Row As %List, ByRef AtEnd As %Integer = 0) As %Status [PlaceAfter = InstanceUncommittedExecute]{ - + #dim tResult as %SQL.StatementResult + New $Namespace + set tSC = $$$OK + try { + set namespace = "" + for { + set namespace = $ORDER( + } + } catch e { + set tSC = e.AsStatus() + } } ClassMethod InstanceUncommittedClose(ByRef qHandle As %Binary) As %Status [PlaceAfter = InstanceUncommittedFetch] { From 338556e7c96fcfdb3b1751f3cfbfaeb5dbd5cd66 Mon Sep 17 00:00:00 2001 From: isc-hwojnick Date: Tue, 23 Jul 2024 09:50:42 -0400 Subject: [PATCH 4/9] feat: instance wide uncommitted queue check for opened file --- CHANGELOG.md | 5 ++++ cls/SourceControl/Git/Change.cls | 40 +++++++++++++++++++++++++++++ cls/SourceControl/Git/Extension.cls | 9 +++++++ cls/SourceControl/Git/Utils.cls | 39 ++++++++-------------------- 4 files changed, 64 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7bf0d744..6c123440 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.5.0] - Unreleased + +### Added +- Files in uncommitted queue in any namespace warn users when opened except for in VSCode (#370) + ## [2.4.1] - Unreleased ### Fixed diff --git a/cls/SourceControl/Git/Change.cls b/cls/SourceControl/Git/Change.cls index 7b137c65..f1322bf0 100644 --- a/cls/SourceControl/Git/Change.cls +++ b/cls/SourceControl/Git/Change.cls @@ -185,6 +185,46 @@ ClassMethod RefreshUncommitted(Display = 0, IncludeRevert = 0, Output gitFiles, quit sc } +Query InstanceUncommitted() As %Query(ROWSPEC = "InternalName:%String,User:%String") +{ +} + +ClassMethod InstanceUncommittedExecute(ByRef qHandle As %Binary) As %Status +{ + set qHandle("q") = "SELECT InternalName, ChangedBy FROM SourceControl_Git.Change" + set namespaces = ##class(SourceControl.Git.Utils).GetGitEnabledNamespaces() + set tPtr = 0 + set qHandle("i") = 1 + while $LISTNEXT(namespaces, tPtr, tValue) { + set namespace = $ZCONVERT(tValue, "U") + set $NAMESPACE = namespace + set resultSet = ##class(%SQL.Statement).%ExecDirect(, qHandle("q")) + while resultSet.%Next() { + set qHandle("changes", $increment(qHandle("changes")), "InternalName") = resultSet.%GetData(1) + set qHandle("changes", qHandle("changes"), "User") = resultSet.%GetData(2) + } + } + + Quit $$$OK +} + +ClassMethod InstanceUncommittedFetch(ByRef qHandle As %Binary, ByRef Row As %List, ByRef AtEnd As %Integer = 0) As %Status [ PlaceAfter = InstanceUncommittedExecute ] +{ + set i = qHandle("i") + set Row = $listbuild(qHandle("changes", i, "InternalName"), qHandle("changes", i, "User")) + if i = qHandle("changes") { + set AtEnd = 1 + } else { + set qHandle("i") = $increment(qHandle("i")) + } + Quit $$$OK +} + +ClassMethod InstanceUncommittedClose(ByRef qHandle As %Binary) As %Status [ PlaceAfter = InstanceUncommittedFetch ] +{ + Quit $$$OK +} + Storage Default { diff --git a/cls/SourceControl/Git/Extension.cls b/cls/SourceControl/Git/Extension.cls index 63085919..a992c98b 100644 --- a/cls/SourceControl/Git/Extension.cls +++ b/cls/SourceControl/Git/Extension.cls @@ -50,6 +50,15 @@ Method UserAction(Type As %Integer, Name As %String, InternalName As %String, Se set Name = "%SourceMenu,Status" } + if (Type = 1) && (Name = 3) { + set user = "" + if ##class(SourceControl.Git.Utils).FileIsUncommitted(InternalName, .user) && (user '= $USERNAME){ + set Target = InternalName _ " is currently being modified by " _ user + write !, Target + set Action = 6 + } + } + if (Type = 1) && ((Name = 1) || (Name = 7)) { do ..AddToSourceControl(InternalName) } diff --git a/cls/SourceControl/Git/Utils.cls b/cls/SourceControl/Git/Utils.cls index 26a90e4d..f0c5e65a 100644 --- a/cls/SourceControl/Git/Utils.cls +++ b/cls/SourceControl/Git/Utils.cls @@ -2423,7 +2423,7 @@ ClassMethod GetGitEnabledNamespaces() As %String { // Get all namespaces set allNamespaces = "" - do ##class(%SYS.Namespace).GetList(.allNamespaces) + do ##class(%SYS.Namespace).ListAll(.allNamespaces) set enabledNamespaces = "" @@ -2460,38 +2460,19 @@ ClassMethod GetGitEnabledNamespaces() As %String quit enabledNamespaces } - -Query InstanceUncommitted() As %Query() +ClassMethod FileIsUncommitted(InternalName As %String, Output User) As %Boolean { -} - -ClassMethod InstanceUncommittedExecute(ByRef qHandle As %Binary) As %Status { - set qHandle("q") = "SELECT InternalName FROM SourceControl_Git.Change" - set namespaces = ..GetGitEnabledNamespaces() - set tPtr = 0 - while $LISTNEXT(namespaces, tPtr, tValue) { - set qHandle("n", $increment(qHandle("n"))) = $ZCONVERT(tValue, "U") - } - - Quit $$$OK -} - -ClassMethod InstanceUncommittedFetch(ByRef qHandle As %Binary, ByRef Row As %List, ByRef AtEnd As %Integer = 0) As %Status [PlaceAfter = InstanceUncommittedExecute]{ - #dim tResult as %SQL.StatementResult - New $Namespace - set tSC = $$$OK - try { - set namespace = "" - for { - set namespace = $ORDER( + set isUncommitted = 0 + set resultSet = ##class(SourceControl.Git.Change).InstanceUncommittedFunc() + while resultSet.%Next() { + set fileName = resultSet.InternalName + if InternalName = fileName { + set isUncommitted = 1 + set User = resultSet.User } - } catch e { - set tSC = e.AsStatus() } -} - -ClassMethod InstanceUncommittedClose(ByRef qHandle As %Binary) As %Status [PlaceAfter = InstanceUncommittedFetch] { + quit isUncommitted } ClassMethod BuildCEInstallationPackage(ByRef destination As %String) As %Status From 4c2135b373c8dc819fed6abc280fc6a4d45d0fbc Mon Sep 17 00:00:00 2001 From: Pravin Barton <9560941+isc-pbarton@users.noreply.github.com> Date: Tue, 20 Aug 2024 16:26:18 -0400 Subject: [PATCH 5/9] fixes to PROTECT and other errors --- cls/SourceControl/Git/Change.cls | 18 +++++++++-------- cls/SourceControl/Git/Utils.cls | 33 ++++++++------------------------ 2 files changed, 18 insertions(+), 33 deletions(-) diff --git a/cls/SourceControl/Git/Change.cls b/cls/SourceControl/Git/Change.cls index 6e1c4016..aac68af0 100644 --- a/cls/SourceControl/Git/Change.cls +++ b/cls/SourceControl/Git/Change.cls @@ -195,10 +195,14 @@ ClassMethod InstanceUncommittedExecute(ByRef qHandle As %Binary) As %Status set namespaces = ##class(SourceControl.Git.Utils).GetGitEnabledNamespaces() set tPtr = 0 set qHandle("i") = 1 + new $namespace while $LISTNEXT(namespaces, tPtr, tValue) { set namespace = $ZCONVERT(tValue, "U") set $NAMESPACE = namespace - set resultSet = ##class(%SQL.Statement).%ExecDirect(, qHandle("q")) + set statement = ##class(%SQL.Statement).%New() + $$$ThrowOnError(statement.%Prepare(qHandle("q"), 0)) + set resultSet = statement.%Execute() + throw:resultSet.%SQLCODE<0 ##class(%Exception.SQL).CreateFromSQLCODE(resultSet.%SQLCODE,resultSet.%Message) while resultSet.%Next() { set qHandle("changes", $increment(qHandle("changes")), "InternalName") = resultSet.%GetData(1) set qHandle("changes", qHandle("changes"), "User") = resultSet.%GetData(2) @@ -211,8 +215,10 @@ ClassMethod InstanceUncommittedExecute(ByRef qHandle As %Binary) As %Status ClassMethod InstanceUncommittedFetch(ByRef qHandle As %Binary, ByRef Row As %List, ByRef AtEnd As %Integer = 0) As %Status [ PlaceAfter = InstanceUncommittedExecute ] { set i = qHandle("i") - set Row = $listbuild(qHandle("changes", i, "InternalName"), qHandle("changes", i, "User")) - if i = qHandle("changes") { + if $data(qHandle("changes",i))=10 { + set Row = $listbuild(qHandle("changes", i, "InternalName"), qHandle("changes", i, "User")) + } + if i >= $get(qHandle("changes"),0) { set AtEnd = 1 } else { set qHandle("i") = $increment(qHandle("i")) @@ -220,11 +226,6 @@ ClassMethod InstanceUncommittedFetch(ByRef qHandle As %Binary, ByRef Row As %Lis Quit $$$OK } -ClassMethod InstanceUncommittedClose(ByRef qHandle As %Binary) As %Status [ PlaceAfter = InstanceUncommittedFetch ] -{ - Quit $$$OK -} - Storage Default { @@ -277,3 +278,4 @@ Storage Default } } + diff --git a/cls/SourceControl/Git/Utils.cls b/cls/SourceControl/Git/Utils.cls index b15c6745..e9add9c7 100644 --- a/cls/SourceControl/Git/Utils.cls +++ b/cls/SourceControl/Git/Utils.cls @@ -2425,35 +2425,16 @@ ClassMethod GetGitEnabledNamespaces() As %String do ##class(%SYS.Namespace).ListAll(.allNamespaces) set enabledNamespaces = "" - - // Write query for verifying git sourcecontrol in namespace - set gitscQuery = 9 - set gitscQuery(1) = "SELECT CASE" - set gitscQuery(2) = "WHEN EXISTS (" - set gitscQuery(3) = "SELECT TABLE_SCHEMA" - set gitscQuery(4) = "FROM INFORMATION_SCHEMA.TABLES" - set gitscQuery(5) = "WHERE TABLE_TYPE = 'BASE TABLE'" - set gitscQuery(6) = "AND TABLE_SCHEMA = 'SourceControl_Git'" - set gitscQuery(7) = ") THEN 1" - set gitscQuery(8) = "ELSE 0" - set gitscQuery(9) = "END AS SchemaExists;" - - set namespace = "" - new $NAMESPACE for { set namespace = $ORDER(allNamespaces(namespace)) quit:namespace="" - set $NAMESPACE = namespace - set statement = ##class(%SQL.Statement).%New() - set status = statement.%Prepare(.gitscQuery) - set result = statement.%Execute() - do result.%Next() - set gitEnabled = result.%GetData(1) - if (gitEnabled) set enabledNamespaces = enabledNamespaces _ $listbuild(namespace) - - - + try { + set sourceControlClass = ##class(%Studio.SourceControl.Interface).SourceControlClassGet(namespace) + } catch err { + set sourceControlClass = "" // user does not have access to this namespace + } + if (sourceControlClass = "SourceControl.Git.Extension") set enabledNamespaces = enabledNamespaces _ $listbuild(namespace) } quit enabledNamespaces @@ -2463,6 +2444,7 @@ ClassMethod FileIsUncommitted(InternalName As %String, Output User) As %Boolean { set isUncommitted = 0 set resultSet = ##class(SourceControl.Git.Change).InstanceUncommittedFunc() + throw:resultSet.%SQLCODE<0 ##class(%Exception.SQL).CreateFromSQLCODE(resultSet.%SQLCODE,resultSet.%Message) while resultSet.%Next() { set fileName = resultSet.InternalName if InternalName = fileName { @@ -2628,3 +2610,4 @@ ClassMethod BaselineExport(pCommitMessage = "", pPushToRemote = "") As %Status } } + From e96bd1f875a1f180b37f632f2935c1f2be7e7582 Mon Sep 17 00:00:00 2001 From: Pravin Barton <9560941+isc-pbarton@users.noreply.github.com> Date: Wed, 21 Aug 2024 11:48:05 -0400 Subject: [PATCH 6/9] Improvements to instance-wide uncommitted queue Editing the file will get rid of the warning. Also, warning can be disabled in configuration. --- cls/SourceControl/Git/Change.cls | 5 +++-- cls/SourceControl/Git/Extension.cls | 18 +++++++++++++----- cls/SourceControl/Git/Settings.cls | 5 ++++- cls/SourceControl/Git/Utils.cls | 11 +++++++++-- 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/cls/SourceControl/Git/Change.cls b/cls/SourceControl/Git/Change.cls index aac68af0..142f0edb 100644 --- a/cls/SourceControl/Git/Change.cls +++ b/cls/SourceControl/Git/Change.cls @@ -185,7 +185,7 @@ ClassMethod RefreshUncommitted(Display = 0, IncludeRevert = 0, Output gitFiles, quit sc } -Query InstanceUncommitted() As %Query(ROWSPEC = "InternalName:%String,User:%String") +Query InstanceUncommitted() As %Query(ROWSPEC = "InternalName:%String,User:%String,Namespace:%String") { } @@ -206,6 +206,7 @@ ClassMethod InstanceUncommittedExecute(ByRef qHandle As %Binary) As %Status while resultSet.%Next() { set qHandle("changes", $increment(qHandle("changes")), "InternalName") = resultSet.%GetData(1) set qHandle("changes", qHandle("changes"), "User") = resultSet.%GetData(2) + set qHandle("changes", qHandle("changes"), "Namespace") = namespace } } @@ -216,7 +217,7 @@ ClassMethod InstanceUncommittedFetch(ByRef qHandle As %Binary, ByRef Row As %Lis { set i = qHandle("i") if $data(qHandle("changes",i))=10 { - set Row = $listbuild(qHandle("changes", i, "InternalName"), qHandle("changes", i, "User")) + set Row = $listbuild(qHandle("changes", i, "InternalName"), qHandle("changes", i, "User"), qHandle("changes", i, "Namespace")) } if i >= $get(qHandle("changes"),0) { set AtEnd = 1 diff --git a/cls/SourceControl/Git/Extension.cls b/cls/SourceControl/Git/Extension.cls index 40f844b4..7a635330 100644 --- a/cls/SourceControl/Git/Extension.cls +++ b/cls/SourceControl/Git/Extension.cls @@ -44,6 +44,7 @@ XData Menu Method UserAction(Type As %Integer, Name As %String, InternalName As %String, SelectedText As %String, ByRef Action As %String, ByRef Target As %String, ByRef Msg As %String, ByRef Reload As %Boolean) As %Status { + set settings = ##class(SourceControl.Git.Settings).%New() // If namespace change event if Type = 1, Name = 5 { // reroute to Status menu option @@ -51,11 +52,18 @@ Method UserAction(Type As %Integer, Name As %String, InternalName As %String, Se } if (Type = 1) && (Name = 3) { - set user = "" - if ##class(SourceControl.Git.Utils).FileIsUncommitted(InternalName, .user) && (user '= $USERNAME){ - set Target = InternalName _ " is currently being modified by " _ user - write !, Target - set Action = 6 + if settings.warnInstanceWideUncommitted { + // if item is being edited in a different namespace, opening it will display an alert. Editing in this namespace will remove the alert. + set filename = ##class(SourceControl.Git.Utils).FullExternalName(.InternalName) + do ##class(SourceControl.Git.Change).GetUncommitted(filename,.tAction) + if '$data(tAction) { + set user = "", inNamespace = "" + if ##class(SourceControl.Git.Utils).InstanceWideUncommittedCheck(InternalName, .user, .inNamespace) { + set Target = "Warning: Item " _ InternalName _ " is currently being modified by " _ user _ " in namespace " _ inNamespace _ "." + write !, Target + set Action = 6 + } + } } } diff --git a/cls/SourceControl/Git/Settings.cls b/cls/SourceControl/Git/Settings.cls index 6a4ce435..bf032545 100644 --- a/cls/SourceControl/Git/Settings.cls +++ b/cls/SourceControl/Git/Settings.cls @@ -47,6 +47,9 @@ Property defaultMergeBranch As %String [ InitialExpression = {##class(SourceCont /// Compile using the configured pull event handler when "Import All" is run Property compileOnImport As %Boolean [ InitialExpression = {##class(SourceControl.Git.Utils).CompileOnImport()} ]; +/// Warn when an item has uncommitted changes in a different namespace in this instance +Property warnInstanceWideUncommitted As %Boolean [ InitialExpression = {##class(SourceControl.Git.Utils).WarnInstanceWideUncommitted()} ]; + Property Mappings [ MultiDimensional ]; Method %OnNew() As %Status @@ -102,6 +105,7 @@ Method %Save() As %Status set @storage@("settings", "mappedItemsReadOnly") = ..mappedItemsReadOnly set @storage@("settings", "defaultMergeBranch") = ..defaultMergeBranch set @storage@("settings", "compileOnImport") = ..compileOnImport + set @storage@("settings", "warnInstanceWideUncommitted") = ..warnInstanceWideUncommitted set @storage@("settings", "basicMode") = ..systemBasicMode if ..basicMode = "system" { kill @storage@("settings", "user", $username, "basicMode") @@ -229,4 +233,3 @@ Method OnAfterConfigure() As %Boolean } } - diff --git a/cls/SourceControl/Git/Utils.cls b/cls/SourceControl/Git/Utils.cls index e9add9c7..06dd283b 100644 --- a/cls/SourceControl/Git/Utils.cls +++ b/cls/SourceControl/Git/Utils.cls @@ -158,6 +158,11 @@ ClassMethod CompileOnImport() As %Boolean quit $get(@..#Storage@("settings","compileOnImport"),1) } +ClassMethod WarnInstanceWideUncommitted() As %Boolean +{ + quit $get(@..#Storage@("settings","warnInstanceWideUncommitted"),1) +} + ClassMethod NeedSettings() As %Boolean [ CodeMode = expression ] { (..TempFolder() = "") || (..GitBinPath() = "") || (..GitBinPath() = """") @@ -2440,16 +2445,18 @@ ClassMethod GetGitEnabledNamespaces() As %String quit enabledNamespaces } -ClassMethod FileIsUncommitted(InternalName As %String, Output User) As %Boolean +/// Returns true if the given item has uncommitted changes on a different namespace in this instance. +ClassMethod InstanceWideUncommittedCheck(InternalName As %String, Output User, Output Namespace) As %Boolean { set isUncommitted = 0 set resultSet = ##class(SourceControl.Git.Change).InstanceUncommittedFunc() throw:resultSet.%SQLCODE<0 ##class(%Exception.SQL).CreateFromSQLCODE(resultSet.%SQLCODE,resultSet.%Message) while resultSet.%Next() { set fileName = resultSet.InternalName - if InternalName = fileName { + if (InternalName = fileName) && (resultSet.Namespace '= $namespace) { set isUncommitted = 1 set User = resultSet.User + set Namespace = resultSet.Namespace } } From 8f61e94e2f7709f4c026b577eddf87e887f5bbba Mon Sep 17 00:00:00 2001 From: Elijah Tamarchenko Date: Mon, 16 Sep 2024 11:04:33 -0400 Subject: [PATCH 7/9] Check %Status from %Next() --- cls/SourceControl/Git/Change.cls | 3 ++- cls/SourceControl/Git/Utils.cls | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/cls/SourceControl/Git/Change.cls b/cls/SourceControl/Git/Change.cls index 142f0edb..eb99ddcc 100644 --- a/cls/SourceControl/Git/Change.cls +++ b/cls/SourceControl/Git/Change.cls @@ -203,7 +203,8 @@ ClassMethod InstanceUncommittedExecute(ByRef qHandle As %Binary) As %Status $$$ThrowOnError(statement.%Prepare(qHandle("q"), 0)) set resultSet = statement.%Execute() throw:resultSet.%SQLCODE<0 ##class(%Exception.SQL).CreateFromSQLCODE(resultSet.%SQLCODE,resultSet.%Message) - while resultSet.%Next() { + while resultSet.%Next(.sc) { + $$$ThrowOnError(sc) set qHandle("changes", $increment(qHandle("changes")), "InternalName") = resultSet.%GetData(1) set qHandle("changes", qHandle("changes"), "User") = resultSet.%GetData(2) set qHandle("changes", qHandle("changes"), "Namespace") = namespace diff --git a/cls/SourceControl/Git/Utils.cls b/cls/SourceControl/Git/Utils.cls index 06dd283b..59510418 100644 --- a/cls/SourceControl/Git/Utils.cls +++ b/cls/SourceControl/Git/Utils.cls @@ -2451,7 +2451,8 @@ ClassMethod InstanceWideUncommittedCheck(InternalName As %String, Output User, O set isUncommitted = 0 set resultSet = ##class(SourceControl.Git.Change).InstanceUncommittedFunc() throw:resultSet.%SQLCODE<0 ##class(%Exception.SQL).CreateFromSQLCODE(resultSet.%SQLCODE,resultSet.%Message) - while resultSet.%Next() { + while resultSet.%Next(.sc) { + $$$ThrowOnError(sc) set fileName = resultSet.InternalName if (InternalName = fileName) && (resultSet.Namespace '= $namespace) { set isUncommitted = 1 From 633114d74448d4e2014f35d995622ac7b6c467a4 Mon Sep 17 00:00:00 2001 From: Elijah Tamarchenko Date: Tue, 24 Sep 2024 14:43:35 -0400 Subject: [PATCH 8/9] Make sure we are using correct namespaces --- cls/SourceControl/Git/Change.cls | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/cls/SourceControl/Git/Change.cls b/cls/SourceControl/Git/Change.cls index eb99ddcc..c0c6c7ea 100644 --- a/cls/SourceControl/Git/Change.cls +++ b/cls/SourceControl/Git/Change.cls @@ -198,16 +198,18 @@ ClassMethod InstanceUncommittedExecute(ByRef qHandle As %Binary) As %Status new $namespace while $LISTNEXT(namespaces, tPtr, tValue) { set namespace = $ZCONVERT(tValue, "U") - set $NAMESPACE = namespace - set statement = ##class(%SQL.Statement).%New() - $$$ThrowOnError(statement.%Prepare(qHandle("q"), 0)) - set resultSet = statement.%Execute() - throw:resultSet.%SQLCODE<0 ##class(%Exception.SQL).CreateFromSQLCODE(resultSet.%SQLCODE,resultSet.%Message) - while resultSet.%Next(.sc) { - $$$ThrowOnError(sc) - set qHandle("changes", $increment(qHandle("changes")), "InternalName") = resultSet.%GetData(1) - set qHandle("changes", qHandle("changes"), "User") = resultSet.%GetData(2) - set qHandle("changes", qHandle("changes"), "Namespace") = namespace + if '(namespace [ "^") { + set $NAMESPACE = namespace + set statement = ##class(%SQL.Statement).%New() + $$$ThrowOnError(statement.%Prepare(qHandle("q"), 0)) + set resultSet = statement.%Execute() + throw:resultSet.%SQLCODE<0 ##class(%Exception.SQL).CreateFromSQLCODE(resultSet.%SQLCODE,resultSet.%Message) + while resultSet.%Next(.sc) { + $$$ThrowOnError(sc) + set qHandle("changes", $increment(qHandle("changes")), "InternalName") = resultSet.%GetData(1) + set qHandle("changes", qHandle("changes"), "User") = resultSet.%GetData(2) + set qHandle("changes", qHandle("changes"), "Namespace") = namespace + } } } From d8ae210dc9bbdb7b1a4a4ff22521ecd641a6dca0 Mon Sep 17 00:00:00 2001 From: Elijah Tamarchenko Date: Thu, 26 Sep 2024 16:11:02 -0400 Subject: [PATCH 9/9] Bump version --- CHANGELOG.md | 6 ++++-- module.xml | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cc815cc6..7a5c2ff6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [2.5.1] - Unreleased +## [2.6.0] - Unreleased + +### Added +- Files in uncommitted queue in any namespace warn users when opened except for in VSCode (#370) ### Fixed - Changed prompts in configure from 0/1 to no/yes (#461) @@ -15,7 +18,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - New UI for the basic mode Sync (#415) -- Files in uncommitted queue in any namespace warn users when opened except for in VSCode (#370) - Allow changing namespaces and IPM package context from web UI (#280) - Support for editing repo from filesystem perspective via web application (#464) - Support for downloading a VSCode workspace file from web UI diff --git a/module.xml b/module.xml index 9374fb5c..f8bc2027 100644 --- a/module.xml +++ b/module.xml @@ -3,7 +3,7 @@ git-source-control - 2.5.1 + 2.6.0 Server-side source control extension for use of Git on InterSystems platforms git source control studio vscode module