summaryrefslogtreecommitdiffstats
path: root/routers
diff options
context:
space:
mode:
authorGeorge Bartolomey <george@bh4.ru>2024-12-14 08:12:04 +0100
committerGeorge Bartolomey <george@bh4.ru>2024-12-23 16:55:25 +0100
commit13ca6c14f16cf2f76243f5fd1bb7efb763de8a36 (patch)
tree689974045bd95e3d3ea4c6e432072bea806c89e9 /routers
parentMerge pull request 'Update module google.golang.org/grpc to v1.69.2 (forgejo)... (diff)
downloadforgejo-13ca6c14f16cf2f76243f5fd1bb7efb763de8a36.tar.xz
forgejo-13ca6c14f16cf2f76243f5fd1bb7efb763de8a36.zip
feat: allow changing default branch update style
This commit allows chaning default branch update style through global and repository settings. The setting affects "Update branch" button in PR view (button shows when some commits are ahead of master branch). When default update style is set to "rebase", dropdown button updates branch by rebase by default. When update style is set to other value, dropdown button updates branch by merge. Any of these actions may be selected using dropdown in any case. Signed-off-by: George Bartolomey <george@bh4.ru>
Diffstat (limited to 'routers')
-rw-r--r--routers/api/v1/repo/repo.go4
-rw-r--r--routers/web/repo/issue.go15
-rw-r--r--routers/web/repo/setting/setting.go1
3 files changed, 20 insertions, 0 deletions
diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go
index 93d40d2dbf..04c6fde453 100644
--- a/routers/api/v1/repo/repo.go
+++ b/routers/api/v1/repo/repo.go
@@ -937,6 +937,7 @@ func updateRepoUnits(ctx *context.APIContext, opts api.EditRepoOption) error {
AllowRebaseUpdate: true,
DefaultDeleteBranchAfterMerge: false,
DefaultMergeStyle: repo_model.MergeStyleMerge,
+ DefaultUpdateStyle: repo_model.UpdateStyleMerge,
DefaultAllowMaintainerEdit: false,
}
} else {
@@ -976,6 +977,9 @@ func updateRepoUnits(ctx *context.APIContext, opts api.EditRepoOption) error {
if opts.DefaultMergeStyle != nil {
config.DefaultMergeStyle = repo_model.MergeStyle(*opts.DefaultMergeStyle)
}
+ if opts.DefaultUpdateStyle != nil {
+ config.DefaultUpdateStyle = repo_model.UpdateStyle(*opts.DefaultUpdateStyle)
+ }
if opts.DefaultAllowMaintainerEdit != nil {
config.DefaultAllowMaintainerEdit = *opts.DefaultAllowMaintainerEdit
}
diff --git a/routers/web/repo/issue.go b/routers/web/repo/issue.go
index 78fb5e6c01..c154a9b665 100644
--- a/routers/web/repo/issue.go
+++ b/routers/web/repo/issue.go
@@ -1918,6 +1918,21 @@ func ViewIssue(ctx *context.Context) {
ctx.Data["MergeStyle"] = mergeStyle
+ var updateStyle repo_model.UpdateStyle
+ // Check correct values and select default
+ if ms, ok := ctx.Data["UpdateStyle"].(repo_model.UpdateStyle); !ok ||
+ !prConfig.IsUpdateStyleAllowed(ms) {
+ defaultUpdateStyle := prConfig.GetDefaultUpdateStyle()
+ if prConfig.IsUpdateStyleAllowed(defaultUpdateStyle) && !ok {
+ updateStyle = defaultUpdateStyle
+ } else if prConfig.AllowMerge {
+ updateStyle = repo_model.UpdateStyleMerge
+ } else if prConfig.AllowRebase {
+ updateStyle = repo_model.UpdateStyleRebase
+ }
+ }
+ ctx.Data["UpdateStyle"] = updateStyle
+
defaultMergeMessage, defaultMergeBody, err := pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pull, mergeStyle)
if err != nil {
ctx.ServerError("GetDefaultMergeMessage", err)
diff --git a/routers/web/repo/setting/setting.go b/routers/web/repo/setting/setting.go
index ce506eafb1..2c6ca77a6a 100644
--- a/routers/web/repo/setting/setting.go
+++ b/routers/web/repo/setting/setting.go
@@ -262,6 +262,7 @@ func UnitsPost(ctx *context.Context) {
AllowRebaseUpdate: form.PullsAllowRebaseUpdate,
DefaultDeleteBranchAfterMerge: form.DefaultDeleteBranchAfterMerge,
DefaultMergeStyle: repo_model.MergeStyle(form.PullsDefaultMergeStyle),
+ DefaultUpdateStyle: repo_model.UpdateStyle(form.PullsDefaultUpdateStyle),
DefaultAllowMaintainerEdit: form.DefaultAllowMaintainerEdit,
},
})