Skip to content

Commit 106e5e8

Browse files
committed
Merge branch 'main' into fix-124
2 parents a9b2561 + b8bc46d commit 106e5e8

File tree

4 files changed

+51
-0
lines changed

4 files changed

+51
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
### Added
1111
- Added 'git push --force' in expert mode (#527)
12+
- Add remote repository to settings page (#448)
1213
- Added environment awareness in configuration, and showing of environment name in UI (#124)
1314

1415
### Fixed

cls/SourceControl/Git/Utils.cls

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

2811+
/// Returns the url for the remote repository (censoring the username)
2812+
ClassMethod GetConfiguredRemote() As %String
2813+
{
2814+
d ..RunGitCommand("remote",.err,.out,"-v")
2815+
set line = out.ReadLine()
2816+
set url = $piece($piece(line,$char(9),2)," ",1)
2817+
return url
2818+
}
2819+
2820+
ClassMethod GetRedactedRemote() As %String
2821+
{
2822+
set url = ..GetConfiguredRemote()
2823+
set username= $piece($piece(url,":",3),"@",1)
2824+
set censoredUrl = $replace(url, username,"*******")
2825+
return censoredUrl
2826+
}
2827+
2828+
ClassMethod SetConfiguredRemote(url) As %String
2829+
{
2830+
do ##class(SourceControl.Git.Utils).RunGitCommandWithInput("remote",,.errStream,.outStream,"set-url","origin",url)
2831+
set output = outStream.ReadLine(outStream.Size)
2832+
quit output
2833+
}
2834+
28112835
}

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
} elseif $extract(pagePath,6,*) = "environment" {
3032
set responseJSON = {
3133
"environment": (##class(SourceControl.Git.Utils).EnvironmentName())
@@ -411,4 +413,10 @@ ClassMethod GetHomeURL() As %String
411413
quit prefix_"/csp/sys/UtilHome.csp"
412414
}
413415

416+
ClassMethod GetRemote() As %Library.DynamicObject
417+
{
418+
set remote = ##class(SourceControl.Git.Utils).GetRedactedRemote()
419+
quit {"remote": (remote)}
420+
}
421+
414422
}

csp/gitprojectsettings.csp

Lines changed: 18 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).GetRedactedRemote()
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,12 @@ body {
9496
set settings.mappedItemsReadOnly = 0
9597
}
9698

99+
set newRemote = $Get(%request.Data("remoteRepo",1))
100+
// If entry was modified, set new remote repo
101+
if (newRemote '= ##class(SourceControl.Git.Utils).GetRedactedRemote()) {
102+
do ##class(SourceControl.Git.Utils).SetConfiguredRemote(newRemote)
103+
}
104+
97105
set settings.compileOnImport = ($Get(%request.Data("compileOnImport", 1)) = 1)
98106

99107
if ($Get(%request.Data("basicMode", 1)) = 1) {
@@ -340,6 +348,16 @@ body {
340348
<input type="text" class="form-control" id="defaultMergeBranch" name="defaultMergeBranch" value='#(..EscapeHTML(settings.defaultMergeBranch))#' placeholder="sample-remote-branch">
341349
</div>
342350
</div>
351+
352+
<div class="form-group row mb-3">
353+
<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>
354+
<div class="col-sm-7">
355+
<input type="text" class="form-control" id="remoteRepo" name="remoteRepo" value='#(..EscapeHTML(remote))#' placeholder="ex. [email protected]:User/UserRepo.git"/>
356+
<div class = "neutral-feedback">
357+
(Username is redacted)
358+
</div>
359+
</div>
360+
</div>
343361

344362
<div class="form-group row mb-3">
345363
<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)