From 0590aba8b708ef366095104c41a97cdc14f5535d Mon Sep 17 00:00:00 2001 From: Alexander Koblov Date: Thu, 13 Aug 2015 15:57:43 +0300 Subject: [PATCH 1/7] group by folder partly done, needs more testing related #16 --- %SourceControl/Git/Utils.cls.xml | 23 +++++++++++++++++++---- csp/gitprojectsettings.csp.xml | 10 +++++++++- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/%SourceControl/Git/Utils.cls.xml b/%SourceControl/Git/Utils.cls.xml index 36434ed..278b21d 100644 --- a/%SourceControl/Git/Utils.cls.xml +++ b/%SourceControl/Git/Utils.cls.xml @@ -86,6 +86,14 @@ Returns root temp folder ]]> + +1 +expression +%String + + + 1 %Boolean @@ -144,7 +152,6 @@ Returns root temp folder %Status set @..InstallNamespaceStorage()@("%defaultTemp") = ..AddSlash(settings("defaultTemp")) set @..#Storage@("settings","namespaceTemp") = ..AddSlash(settings("namespaceTemp")) + set @..#Storage@("settings","groupByFolder") = $case(settings("groupByFolder"), "":"", :1) ]]> @@ -311,11 +319,17 @@ Returns root temp folder #dim extension As %String = $ZConvert($Piece(name,".",$Length(name,".")),"L") set $Piece(name,".",$Length(name,".")) = extension + #dim groupByFolder As %Boolean = ..GroupByFolder() // we shall put classes in different folders if extension = "cls" { - set name = $Translate( $Piece(name,".", 1, $Length(name,".")-1), ".", ..#Slash)_".cls" + set name = $Translate( $Piece(name,".", 1, $Length(name,".")-1), ".", ..#Slash)_".cls" + } elseif groupByFolder { + // If groupByFolder = 1 then we put inc, mac, int in corresponding folder, not in root. + // For example project.include.inc will be placed in project\include.inc.xml + set sep = $Case(extension, "dfi" : "-", : ".") + set name = $Translate( $Piece(name,".", 1, $Length(name,".")-1), sep, ..#Slash)_"." _ extension } - + // we shall delete csp-app from csp files if $Extract(name, 1) = ..#Slash { set $Extract(name, 1) = "" @@ -323,7 +337,8 @@ Returns root temp folder if $Piece(name, ..#Slash, 1) = "csp" { set $Piece(name, ..#Slash, 1, 2) = "csp" } - + write "name=",name,! + write "external name = ", $Translate(name," *?","___")_".xml", ! quit $Translate(name," *?","___")_".xml" ]]> diff --git a/csp/gitprojectsettings.csp.xml b/csp/gitprojectsettings.csp.xml index 159056b..2a048f5 100644 --- a/csp/gitprojectsettings.csp.xml +++ b/csp/gitprojectsettings.csp.xml @@ -16,7 +16,7 @@ znspace namespace if $Data(%request.Data("gitsettings",1)) { kill settings - for param="gitBinPath","defaultTemp","namespaceTemp" { + for param="gitBinPath","defaultTemp","namespaceTemp","groupByFolder" { set settings(param) = $Get(%request.Data(param,1)) } do ##class(%SourceControl.Git.Utils).UpdateSettings(.settings) @@ -24,6 +24,7 @@ set gitBinPath = ##class(%SourceControl.Git.Utils).GitBinPath() set defaultTemp = ##class(%SourceControl.Git.Utils).DefaultTemp() set namespaceTemp = ##class(%SourceControl.Git.Utils).TempFolder() + set groupByFolder = ##class(%SourceControl.Git.Utils).GroupByFolder() znspace oldNS set:defaultTemp="" defaultTemp = "c:\temp\" @@ -48,9 +49,16 @@ file does not found Default path to temp folder
(e.g. c:\temp) +Settings for this namespace only + Temp folder for this namespace
(e.g. c:\someproj\) + From c9ade716ae18717631dade9b341cc7f13efc5344 Mon Sep 17 00:00:00 2001 From: Alexander Koblov Date: Thu, 13 Aug 2015 16:09:35 +0300 Subject: [PATCH 2/7] commented out debug writes --- %SourceControl/Git/Utils.cls.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/%SourceControl/Git/Utils.cls.xml b/%SourceControl/Git/Utils.cls.xml index ea9a9bc..76850f6 100644 --- a/%SourceControl/Git/Utils.cls.xml +++ b/%SourceControl/Git/Utils.cls.xml @@ -337,8 +337,8 @@ Returns root temp folder if $Piece(name, ..#Slash, 1) = "csp" { set $Piece(name, ..#Slash, 1, 2) = "csp" } - write "name=",name,! - write "external name = ", $Translate(name," *?","___")_".xml", ! + //write "name=",name,! + //write "external name = ", $Translate(name," *?","___")_".xml", ! quit $Translate(name," *?","___")_".xml" ]]> From 112c55f67078572fc0c9276f6fe1cf8f20052c45 Mon Sep 17 00:00:00 2001 From: Alexander Koblov Date: Tue, 24 Nov 2015 16:12:26 +0300 Subject: [PATCH 3/7] there were cases where xml for empty folder was exported. This is now fixed --- %SourceControl/Git/Utils.cls.xml | 12 ++++++++---- cache-tort-git.prj.xml | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/%SourceControl/Git/Utils.cls.xml b/%SourceControl/Git/Utils.cls.xml index 76850f6..002f11a 100644 --- a/%SourceControl/Git/Utils.cls.xml +++ b/%SourceControl/Git/Utils.cls.xml @@ -436,6 +436,9 @@ Returns root temp folder quit:extension="csp" 0 #dim filename = $system.CSP.GetFileName(InternalName_"/") + if filename = "" && ($Extract(InternalName,1) '= "/") { + set filename = $system.CSP.GetFileName("/"_InternalName_"/") + } quit filename'="" && ##class(%File).DirectoryExists(filename) ]]> @@ -815,12 +818,13 @@ if temp file for InternalName not found return "0,0" in tempFileTSH%Status - + From b613b69e4e6ae036f96f5c99e74d63016aca1f51 Mon Sep 17 00:00:00 2001 From: Alexander Koblov Date: Mon, 11 Jan 2016 12:56:46 +0300 Subject: [PATCH 4/7] info messages, when file from disk is imported or skipped --- %SourceControl/Git/Utils.cls.xml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/%SourceControl/Git/Utils.cls.xml b/%SourceControl/Git/Utils.cls.xml index 002f11a..517ea3f 100644 --- a/%SourceControl/Git/Utils.cls.xml +++ b/%SourceControl/Git/Utils.cls.xml @@ -852,9 +852,13 @@ if temp file for InternalName not found return "0,0" in tempFileTSH @@ -896,6 +900,8 @@ if temp file for InternalName not found return "0,0" in tempFileTSH1 %Status @@ -1014,7 +1020,7 @@ if temp file for InternalName not found return "0,0" in tempFileTSH Date: Mon, 11 Jan 2016 15:57:49 +0300 Subject: [PATCH 5/7] now we support hooks for git commands. Please, do not use this, unless you know what you are doing. refer #33 --- %SourceControl/Git/Utils.cls.xml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/%SourceControl/Git/Utils.cls.xml b/%SourceControl/Git/Utils.cls.xml index 517ea3f..5188cf0 100644 --- a/%SourceControl/Git/Utils.cls.xml +++ b/%SourceControl/Git/Utils.cls.xml @@ -257,7 +257,14 @@ Returns root temp folder }elseif ..IsMenuGitCommand(menuItemName) { set Action = 3 #dim command As %String = $ZConvert($Extract(menuItemName, 2, *), "L") - set Target = ..GitCommand(command) + set ec = $$$OK + if $Data(@..#Storage@("hook"),hook)=1 { + set $ListBuild(class,method) = hook + set ec = $classmethod(class, method, command, InternalName) + } + if $$$ISOK(ec) { + set Target = ..GitCommand(command) + } } }elseif (menuName = "%SourceMenuContext") { From 9bd17357d02b2a27742cf5ecff991990d1aa96c4 Mon Sep 17 00:00:00 2001 From: Alexander Koblov Date: Mon, 11 Jan 2016 16:00:06 +0300 Subject: [PATCH 6/7] correcting global node -- should be settings refer #33 --- %SourceControl/Git/Utils.cls.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/%SourceControl/Git/Utils.cls.xml b/%SourceControl/Git/Utils.cls.xml index 5188cf0..d9c5e13 100644 --- a/%SourceControl/Git/Utils.cls.xml +++ b/%SourceControl/Git/Utils.cls.xml @@ -258,7 +258,7 @@ Returns root temp folder set Action = 3 #dim command As %String = $ZConvert($Extract(menuItemName, 2, *), "L") set ec = $$$OK - if $Data(@..#Storage@("hook"),hook)=1 { + if $Data(@..#Storage@("settings","hook"),hook)=1 { set $ListBuild(class,method) = hook set ec = $classmethod(class, method, command, InternalName) } From 00642072d6474b584c8a23e41a176c4997563df6 Mon Sep 17 00:00:00 2001 From: Alexander Koblov Date: Mon, 1 Feb 2016 15:39:40 +0300 Subject: [PATCH 7/7] new menu item Import All Force -- import regardless of timestamps Also notifications on skipped Export Fixes #35. --- %SourceControl/Git.cls.xml | 7 +++++-- %SourceControl/Git/Utils.cls.xml | 26 ++++++++++++++++++++------ README.md | 2 +- cache-tort-git.prj.xml | 2 +- 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/%SourceControl/Git.cls.xml b/%SourceControl/Git.cls.xml index ae35940..54bea27 100644 --- a/%SourceControl/Git.cls.xml +++ b/%SourceControl/Git.cls.xml @@ -29,6 +29,7 @@ + @@ -80,7 +81,9 @@ set DisplayName = "Export All" } elseif name = "%Import" { set DisplayName = "Import All" - } elseif name = "%RepoStatus" && ##class(Utils).GitBinExists() { + } elseif name = "%ImportForce" { + set DisplayName = "Import All Force" + }elseif name = "%RepoStatus" && ##class(Utils).GitBinExists() { set DisplayName = "Check for modifications" }elseif name = "%OpenRepoFolder" { set DisplayName = "Open Repo Folder" @@ -162,7 +165,7 @@ to load the item from an external format. diff --git a/%SourceControl/Git/Utils.cls.xml b/%SourceControl/Git/Utils.cls.xml index d9c5e13..bf9cd3c 100644 --- a/%SourceControl/Git/Utils.cls.xml +++ b/%SourceControl/Git/Utils.cls.xml @@ -234,13 +234,18 @@ Returns root temp folder set ec = ..MakeError("Unable to create folder "_..TempFolder()) } }elseif (menuItemName = "%Export") { + write "==export start==",! set ec = ..ExportAll() if ec { - write "Program export is done",! + write !,"==export done==",! } }elseif (menuItemName = "%Import") { set ec = ..ImportAll() set Reload = 1 + }elseif (menuItemName = "%ImportForce") { + #define Force 1 + set ec = ..ImportAll($$$Force) + set Reload = 1 }elseif (menuItemName = "%Clone") { if ##class(%File).CreateDirectoryChain(..TempFolder()) { // cleanup items info @@ -841,9 +846,12 @@ if temp file for InternalName not found return "0,0" in tempFileTSH - + +force = 1 then imports in any case.]]> 1 -InternalName:%String +InternalName:%String,force:%Boolean=0 %Status 1 +force:%Boolean=0 %Status +force = 1 then we import item even if timestamp in system is newer]]> 1 +force:%Boolean=0 %Status diff --git a/README.md b/README.md index ea0f806..5a39e00 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ Instead of your-git-server, your-git-login and your-git-password write actual va 20. Enter repository URL. 30. [If your TortoiseGit Version < 1.8.5] In appeared window TortoiseGit adds repository name to folder. You should delete it (Write c:\temp\git\user instead of c:\temp\git\user\reponame) 40. Press 'OK'. -50. Select menu Import All to load changes from temp folder to Caché. +50. Select menu Import All to load changes from temp folder to Caché. Import All compares timestamps of files and Caché items and import files only if they are newer then Caché versions. There is also Import All Force menu item that import files without any checks. ###Work Cycle 10. Choose menu item Pull. diff --git a/cache-tort-git.prj.xml b/cache-tort-git.prj.xml index f7f5b0c..ef325b0 100644 --- a/cache-tort-git.prj.xml +++ b/cache-tort-git.prj.xml @@ -1,6 +1,6 @@ - +