Skip to content

Commit 4c46e10

Browse files
committed
Merge branch 'main' into issue-484
2 parents d7d0032 + b8bc46d commit 4c46e10

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

1314
### Fixed
1415
- Fixed display of other users' username in workspace view on Unix (#530)

cls/SourceControl/Git/Utils.cls

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2803,6 +2803,30 @@ ClassMethod BaselineExport(pCommitMessage = "", pPushToRemote = "") As %Status
28032803
return sc
28042804
}
28052805

2806+
/// Returns the url for the remote repository (censoring the username)
2807+
ClassMethod GetConfiguredRemote() As %String
2808+
{
2809+
d ..RunGitCommand("remote",.err,.out,"-v")
2810+
set line = out.ReadLine()
2811+
set url = $piece($piece(line,$char(9),2)," ",1)
2812+
return url
2813+
}
2814+
2815+
ClassMethod GetRedactedRemote() As %String
2816+
{
2817+
set url = ..GetConfiguredRemote()
2818+
set username= $piece($piece(url,":",3),"@",1)
2819+
set censoredUrl = $replace(url, username,"*******")
2820+
return censoredUrl
2821+
}
2822+
2823+
ClassMethod SetConfiguredRemote(url) As %String
2824+
{
2825+
do ##class(SourceControl.Git.Utils).RunGitCommandWithInput("remote",,.errStream,.outStream,"set-url","origin",url)
2826+
set output = outStream.ReadLine(outStream.Size)
2827+
quit output
2828+
}
2829+
28062830
// Returns true if the current branch is the default merge branch and we are in basic mode
28072831

28082832
ClassMethod InDefaultBranchBasicMode() As %Boolean

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, *) = "basic-and-default" {
3032
set responseJSON = {
3133
"basic-and-default": (##class(SourceControl.Git.Utils).InDefaultBranchBasicMode())
@@ -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) {
@@ -326,6 +334,16 @@ body {
326334
<input type="text" class="form-control" id="defaultMergeBranch" name="defaultMergeBranch" value='#(..EscapeHTML(settings.defaultMergeBranch))#' placeholder="sample-remote-branch">
327335
</div>
328336
</div>
337+
338+
<div class="form-group row mb-3">
339+
<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>
340+
<div class="col-sm-7">
341+
<input type="text" class="form-control" id="remoteRepo" name="remoteRepo" value='#(..EscapeHTML(remote))#' placeholder="ex. [email protected]:User/UserRepo.git"/>
342+
<div class = "neutral-feedback">
343+
(Username is redacted)
344+
</div>
345+
</div>
346+
</div>
329347

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