Skip to content

Commit d807278

Browse files
committed
Add and use setting for private key file
1 parent a40d44a commit d807278

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

cls/SourceControl/Git/Utils.cls

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,11 @@ ClassMethod GitUserEmail() As %String
7979
Quit $Get(@..#Storage@("settings","user",$username,"gitUserEmail"))
8080
}
8181

82+
ClassMethod PrivateKeyFile() As %String
83+
{
84+
Quit $Get(@..#Storage@("settings","ssh","privateKeyFile"))
85+
}
86+
8287
ClassMethod NeedSettings() As %Boolean [ CodeMode = expression ]
8388
{
8489
(..DefaultTemp() = "") || (..GitBinPath() = "") || (..GitBinPath() = """")
@@ -110,6 +115,7 @@ ClassMethod UpdateSettings(ByRef settings) As %Status
110115
set @..#Storage@("settings","groupByFolder") = $case(settings("groupByFolder"), "":"", :1)
111116
set @..#Storage@("settings","user",$username,"gitUserName") = settings("gitUserName")
112117
set @..#Storage@("settings","user",$username,"gitUserEmail") = settings("gitUserEmail")
118+
set @..#Storage@("settings","ssh","privateKeyFile") = settings("privateKeyFile")
113119

114120
quit $$$OK
115121
}
@@ -306,6 +312,8 @@ ClassMethod Fetch(ByRef diffFiles) As %Status
306312
while (outStream.AtEnd = 0) {
307313
set diffFiles = diffFiles_$lb(outStream.ReadLine())
308314
}
315+
do outStream.Rewind()
316+
do outStream.OutputToDevice()
309317
quit $$$OK
310318
}
311319

@@ -1096,6 +1104,12 @@ ClassMethod RunGitCommandWithInput(command As %String, inFile As %String = "", O
10961104
set newArgs($i(newArgs)) = "-C"
10971105
set newArgs($i(newArgs)) = ..TempFolder()
10981106

1107+
set privateKeyFile = ..PrivateKeyFile()
1108+
if (privateKeyFile '= "") {
1109+
set newArgs($i(newArgs)) = "-c"
1110+
set newArgs($i(newArgs)) = "core.sshCommand=ssh -F /dev/null -i "_privateKeyFile
1111+
}
1112+
10991113
set username = ..GitUserName()
11001114
set email = ..GitUserEmail()
11011115

csp/gitprojectsettings.csp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
set $namespace = namespace
2121
if $Data(%request.Data("gitsettings",1)) {
2222
kill settings
23-
for param="gitBinPath","defaultTemp","namespaceTemp","groupByFolder","gitUserName","gitUserEmail" {
23+
for param="gitBinPath","defaultTemp","namespaceTemp","groupByFolder","privateKeyFile","gitUserName","gitUserEmail" {
2424
set settings(param) = $Get(%request.Data(param,1))
2525
}
2626
do ##class(SourceControl.Git.Utils).UpdateSettings(.settings)
@@ -29,6 +29,7 @@
2929
set defaultTemp = ##class(SourceControl.Git.Utils).DefaultTemp()
3030
set namespaceTemp = ##class(SourceControl.Git.Utils).TempFolder()
3131
set groupByFolder = ##class(SourceControl.Git.Utils).GroupByFolder()
32+
set privateKeyFile = ##class(SourceControl.Git.Utils).PrivateKeyFile()
3233
set gitUserName = ##class(SourceControl.Git.Utils).GitUserName()
3334
set gitUserEmail = ##class(SourceControl.Git.Utils).GitUserEmail()
3435
set:defaultTemp="" defaultTemp = "c:\temp\"
@@ -65,6 +66,13 @@
6566
</div>
6667
</div>
6768

69+
<div class="form-group row">
70+
<label for="privateKeyFile" class="col-sm-4 col-form-label">SSH Private Key File</label>
71+
<div class="col-sm-8">
72+
<input type="text" class="form-control" id="privateKeyFile" name="privateKeyFile" value='#(..EscapeHTML(privateKeyFile))#'/>
73+
</div>
74+
</div>
75+
6876
<!--
6977
<div class="form-group row">
7078
<label for="groupByFolder" class="col-sm-4 col-form-label">Group all items by folders</label>

0 commit comments

Comments
 (0)