Skip to content

Commit 321b88c

Browse files
committed
Added remote repository to settings
1 parent 93ebd68 commit 321b88c

File tree

3 files changed

+49
-0
lines changed

3 files changed

+49
-0
lines changed

cls/SourceControl/Git/Utils.cls

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2789,4 +2789,28 @@ ClassMethod BaselineExport(pCommitMessage = "", pPushToRemote = "") As %Status
27892789
return sc
27902790
}
27912791

2792+
/// Returns the url for the remote repository (censoring the username)
2793+
ClassMethod GetConfiguredRemote() As %String
2794+
{
2795+
d ..RunGitCommand("remote",.err,.out,"-v")
2796+
set line = out.ReadLine()
2797+
set url = $piece($piece(line,$char(9),2)," ",1)
2798+
return url
2799+
}
2800+
2801+
ClassMethod GetCensoredRemote() As %String
2802+
{
2803+
set url = ..GetConfiguredRemote()
2804+
set username= $piece($piece(url,":",3),"@",1)
2805+
set censoredUrl = $replace(url, username,"*******")
2806+
return censoredUrl
2807+
}
2808+
2809+
ClassMethod SetConfiguredRemote(url) As %String
2810+
{
2811+
do ##class(SourceControl.Git.Utils).RunGitCommandWithInput("remote",,.errStream,.outStream,"set-url","origin",url)
2812+
set output = outStream.ReadLine(outStream.Size)
2813+
quit output
2814+
}
2815+
27922816
}

cls/SourceControl/Git/WebUIDriver.cls

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ ClassMethod HandleRequest(pagePath As %String, InternalName As %String = "", Out
2626
set responseJSON = {
2727
"url": (..GetHomeURL())
2828
}
29+
} elseif $extract(pagePath,6,*) = "remote" {
30+
set responseJSON = ..GetRemote()
2931
} else {
3032
set %response.Status = ##class(%CSP.REST).#HTTP404NOTFOUND
3133
set responseJSON = {"error":("invalid URI: " _ pagePath)}
@@ -407,4 +409,10 @@ ClassMethod GetHomeURL() As %String
407409
quit prefix_"/csp/sys/UtilHome.csp"
408410
}
409411

412+
ClassMethod GetRemote() As %Library.DynamicObject
413+
{
414+
set remote = ##class(SourceControl.Git.Utils).GetCensoredRemote()
415+
quit {"remote": (remote)}
416+
}
417+
410418
}

csp/gitprojectsettings.csp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ body {
7979
set homeURL = ##class(SourceControl.Git.WebUIDriver).GetHomeURL()
8080

8181
set settings = ##class(SourceControl.Git.Settings).%New()
82+
set remote = ##class(SourceControl.Git.Utils).GetCensoredRemote()
83+
/// After Save
8284
if $Data(%request.Data("gitsettings",1)) {
8385
for param="gitUserName","gitUserEmail" {
8486
set $Property(settings,param) = $Get(%request.Data(param,1))
@@ -94,6 +96,11 @@ body {
9496
set settings.mappedItemsReadOnly = 0
9597
}
9698

99+
set newRemote = $Get(%request.Data("remoteRepo",1))
100+
if (newRemote '= ##class(SourceControl.Git.Utils).GetConfiguredRemote()) {
101+
do ##class(SourceControl.Git.Utils).SetConfiguredRemote(newRemote)
102+
}
103+
97104
set settings.compileOnImport = ($Get(%request.Data("compileOnImport", 1)) = 1)
98105

99106
if ($Get(%request.Data("basicMode", 1)) = 1) {
@@ -326,6 +333,16 @@ body {
326333
<input type="text" class="form-control" id="defaultMergeBranch" name="defaultMergeBranch" value='#(..EscapeHTML(settings.defaultMergeBranch))#' placeholder="sample-remote-branch">
327334
</div>
328335
</div>
336+
337+
<div class="form-group row mb-3">
338+
<label for="remoteRepo" class="offset-sm-1 col-sm-3 col-form-label" data-toggle="tooltip" data-placement="top" title="Url to Remote repository">Remote Repository</label>
339+
<div class="col-sm-7">
340+
<input type="text" class="form-control" id="remoteRepo" name="remoteRepo" value='#(..EscapeHTML(remote))#' placeholder="ex. [email protected]:User/UserRepo.git"/>
341+
<div class = "neutral-feedback">
342+
(Username is censored)
343+
</div>
344+
</div>
345+
</div>
329346

330347
<div class="form-group row mb-3">
331348
<label for="mappedItemsReadOnly" class="offset-sm-1 col-sm-3 col-form-label" data-toggle="tooltip" data-placement="top" title="Whether items mapped from a database other than this namespace's default routine database should be read-only. If enabled, mapped items won't be saved to source control or exported. NOTE: These are different from the mappings configured in this settings page"> Treat Mapped Items as Read-only</label>

0 commit comments

Comments
 (0)