Skip to content

Commit 3817c3b

Browse files
committed
started code for merging from default branch
1 parent 8d41e1c commit 3817c3b

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed

cls/SourceControl/Git/Settings.cls

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ Property userBasicMode As %String [ InitialExpression = {##class(SourceControl.G
4141
/// The system's default mode. If true, the system defaults to basic mode
4242
Property systemBasicMode As %Boolean [ InitialExpression = {##class(SourceControl.Git.Utils).SystemBasicMode()} ];
4343

44+
/// In Basic mode, Sync will merge changes from this remote branch
45+
Property defaultMergeBranch As %String [ InitialExpression = {##class(SourceControl.Git.Utils).DefaultMergeBranch()} ];
46+
4447
Property Mappings [ MultiDimensional ];
4548

4649
Method %OnNew() As %Status
@@ -93,6 +96,7 @@ Method %Save() As %Status
9396
set @storage@("settings","percentClassReplace") = ..percentClassReplace
9497
set @storage@("settings","settingsUIReadOnly") = ..settingsUIReadOnly
9598
set @storage@("settings", "mappedItemsReadOnly") = ..mappedItemsReadOnly
99+
set @storage@("settings", "defaultMergeBranch") = ..defaultMergeBranch
96100
set @storage@("settings", "basicMode") = ..systemBasicMode
97101
if ..basicMode = "system" {
98102
kill @storage@("settings", "user", $username, "basicMode")

cls/SourceControl/Git/Utils.cls

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,11 @@ ClassMethod SystemBasicMode() As %Boolean
128128
quit $get(@..#Storage@("settings", "basicMode"), 0)
129129
}
130130

131+
ClassMethod DefaultMergeBranch() As %String
132+
{
133+
quit $get(@..#Storage@("settings", "defaultMergeBranch"), "")
134+
}
135+
131136
ClassMethod MappedItemsReadOnly() As %Boolean
132137
{
133138
quit $get(@..#Storage@("settings", "mappedItemsReadOnly"), 1)
@@ -379,6 +384,17 @@ ClassMethod StageAddedFiles()
379384
}
380385
}
381386

387+
/// Merges the files from the configured branch as part of the Sync operation
388+
ClassMethod MergeDefaultRemoteBranch()
389+
{
390+
set settings = ##class(SourceControl.Git.Settings).%New()
391+
set defaultMergeBranch = settings.defaultMergeBranch
392+
if defaultMergeBranch '= "" {
393+
do ..RunGitWithArgs(.errStream, .outStream, "rebase", defaultMergeBranch)
394+
do ..PrintStreams(errStream, outStream)
395+
}
396+
}
397+
382398
/// Converts the DynamicArray into a list and calls the SourceControl.Git.Change RemoveUncommitted method on the newly created list
383399
ClassMethod ClearUncommitted(filesWithActions) As %Status
384400
{
@@ -403,6 +419,7 @@ ClassMethod Sync(Msg As %String) As %Status
403419
} else {
404420
do ..Fetch()
405421
do ..Pull()
422+
do ..DefaultMergeBranch()
406423
do ..SyncCommit(Msg)
407424
do ..Push()
408425
}

csp/gitprojectsettings.csp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ body {
8080
set $Property(settings,param) = $Get(%request.Data(param,1))
8181
}
8282
if ('settings.settingsUIReadOnly) {
83-
for param="gitBinPath","namespaceTemp","privateKeyFile","pullEventClass","percentClassReplace" {
83+
for param="gitBinPath","namespaceTemp","privateKeyFile","pullEventClass","percentClassReplace", "defaultMergeBranch" {
8484
set $Property(settings,param) = $Get(%request.Data(param,1))
8585
}
8686

@@ -308,6 +308,13 @@ body {
308308

309309

310310
</div>
311+
312+
<div class="form-group row mb-3">
313+
<label for="defaultMergeBranch" class="offset-sm-1 col-sm-3 col-form-label" data-toggle="tooltip" data-placement="top" title="In basic mode, the Sync operation will merge changes from this remote branch (leave blank for no branch)">Default merge branch</label>
314+
<div class="col-sm-7">
315+
<input type="text" class="form-control" id="defaultMergeBranch" name="defaultMergeBranch" value='#(..EscapeHTML(settings.defaultMergeBranch))#' placeholder="sample-remote-branch">
316+
</div>
317+
</div>
311318

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