From 975cd35003cb0ad77b7a4e70d99e264de6cd896d Mon Sep 17 00:00:00 2001 From: Jason Song Date: Tue, 27 Dec 2022 16:29:41 +0800 Subject: [PATCH 1/8] feat: support merge message detail --- routers/api/v1/repo/pull.go | 2 +- routers/web/repo/issue.go | 6 ++-- routers/web/repo/pull.go | 2 +- services/pull/merge.go | 32 ++++++++++++--------- templates/repo/issue/view_content/pull.tmpl | 5 ++-- 5 files changed, 27 insertions(+), 20 deletions(-) diff --git a/routers/api/v1/repo/pull.go b/routers/api/v1/repo/pull.go index ed23b267f287..c5d254d1a510 100644 --- a/routers/api/v1/repo/pull.go +++ b/routers/api/v1/repo/pull.go @@ -815,7 +815,7 @@ func MergePullRequest(ctx *context.APIContext) { message := strings.TrimSpace(form.MergeTitleField) if len(message) == 0 { - message, err = pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pr, repo_model.MergeStyle(form.Do)) + message, _, err = pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pr, repo_model.MergeStyle(form.Do)) if err != nil { ctx.Error(http.StatusInternalServerError, "GetDefaultMergeMessage", err) return diff --git a/routers/web/repo/issue.go b/routers/web/repo/issue.go index d315525dac87..e94a623c5aac 100644 --- a/routers/web/repo/issue.go +++ b/routers/web/repo/issue.go @@ -1664,19 +1664,21 @@ func ViewIssue(ctx *context.Context) { ctx.Data["MergeStyle"] = mergeStyle - defaultMergeMessage, err := pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pull, mergeStyle) + defaultMergeMessage, defaultMergeDetail, err := pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pull, mergeStyle) if err != nil { ctx.ServerError("GetDefaultMergeMessage", err) return } ctx.Data["DefaultMergeMessage"] = defaultMergeMessage + ctx.Data["DefaultMergeDetail"] = defaultMergeDetail - defaultSquashMergeMessage, err := pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pull, repo_model.MergeStyleSquash) + defaultSquashMergeMessage, defaultSquashMergeDetail, err := pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pull, repo_model.MergeStyleSquash) if err != nil { ctx.ServerError("GetDefaultSquashMergeMessage", err) return } ctx.Data["DefaultSquashMergeMessage"] = defaultSquashMergeMessage + ctx.Data["DefaultSquashMergeDetail"] = defaultSquashMergeDetail if err = pull.LoadProtectedBranch(ctx); err != nil { ctx.ServerError("LoadProtectedBranch", err) diff --git a/routers/web/repo/pull.go b/routers/web/repo/pull.go index bea6bfe433c1..657470725240 100644 --- a/routers/web/repo/pull.go +++ b/routers/web/repo/pull.go @@ -973,7 +973,7 @@ func MergePullRequest(ctx *context.Context) { message := strings.TrimSpace(form.MergeTitleField) if len(message) == 0 { var err error - message, err = pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pr, repo_model.MergeStyle(form.Do)) + message, _, err = pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pr, repo_model.MergeStyle(form.Do)) if err != nil { ctx.ServerError("GetDefaultMergeMessage", err) return diff --git a/services/pull/merge.go b/services/pull/merge.go index 1c42c1c17b8b..87f81f7257fb 100644 --- a/services/pull/merge.go +++ b/services/pull/merge.go @@ -39,19 +39,19 @@ import ( ) // GetDefaultMergeMessage returns default message used when merging pull request -func GetDefaultMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr *issues_model.PullRequest, mergeStyle repo_model.MergeStyle) (string, error) { +func GetDefaultMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr *issues_model.PullRequest, mergeStyle repo_model.MergeStyle) (string, string, error) { if err := pr.LoadHeadRepo(ctx); err != nil { - return "", err + return "", "", err } if err := pr.LoadBaseRepo(ctx); err != nil { - return "", err + return "", "", err } if pr.BaseRepo == nil { - return "", repo_model.ErrRepoNotExist{ID: pr.BaseRepoID} + return "", "", repo_model.ErrRepoNotExist{ID: pr.BaseRepoID} } if err := pr.LoadIssue(ctx); err != nil { - return "", err + return "", "", err } isExternalTracker := pr.BaseRepo.UnitEnabled(ctx, unit.TypeExternalTracker) @@ -64,12 +64,12 @@ func GetDefaultMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr templateFilepath := fmt.Sprintf(".gitea/default_merge_message/%s_TEMPLATE.md", strings.ToUpper(string(mergeStyle))) commit, err := baseGitRepo.GetBranchCommit(pr.BaseRepo.DefaultBranch) if err != nil { - return "", err + return "", "", err } templateContent, err := commit.GetFileContent(templateFilepath, setting.Repository.PullRequest.DefaultMergeMessageSize) if err != nil { if !git.IsErrNotExist(err) { - return "", err + return "", "", err } } else { vars := map[string]string{ @@ -108,26 +108,30 @@ func GetDefaultMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr } } - return os.Expand(templateContent, func(s string) string { - return vars[s] - }), nil + templateDetail := "" + if splits := strings.SplitN(templateContent, "\n", 2); len(splits) == 2 { + templateContent = splits[0] + templateDetail = splits[1] + } + mapping := func(s string) string { return vars[s] } + return os.Expand(templateContent, mapping), os.Expand(templateDetail, mapping), nil } } // Squash merge has a different from other styles. if mergeStyle == repo_model.MergeStyleSquash { - return fmt.Sprintf("%s (%s%d)", pr.Issue.Title, issueReference, pr.Issue.Index), nil + return fmt.Sprintf("%s (%s%d)", pr.Issue.Title, issueReference, pr.Issue.Index), "", nil } if pr.BaseRepoID == pr.HeadRepoID { - return fmt.Sprintf("Merge pull request '%s' (%s%d) from %s into %s", pr.Issue.Title, issueReference, pr.Issue.Index, pr.HeadBranch, pr.BaseBranch), nil + return fmt.Sprintf("Merge pull request '%s' (%s%d) from %s into %s", pr.Issue.Title, issueReference, pr.Issue.Index, pr.HeadBranch, pr.BaseBranch), "", nil } if pr.HeadRepo == nil { - return fmt.Sprintf("Merge pull request '%s' (%s%d) from :%s into %s", pr.Issue.Title, issueReference, pr.Issue.Index, pr.HeadBranch, pr.BaseBranch), nil + return fmt.Sprintf("Merge pull request '%s' (%s%d) from :%s into %s", pr.Issue.Title, issueReference, pr.Issue.Index, pr.HeadBranch, pr.BaseBranch), "", nil } - return fmt.Sprintf("Merge pull request '%s' (%s%d) from %s:%s into %s", pr.Issue.Title, issueReference, pr.Issue.Index, pr.HeadRepo.FullName(), pr.HeadBranch, pr.BaseBranch), nil + return fmt.Sprintf("Merge pull request '%s' (%s%d) from %s:%s into %s", pr.Issue.Title, issueReference, pr.Issue.Index, pr.HeadRepo.FullName(), pr.HeadBranch, pr.BaseBranch), "", nil } // Merge merges pull request to base repository. diff --git a/templates/repo/issue/view_content/pull.tmpl b/templates/repo/issue/view_content/pull.tmpl index d68f3e541439..554c0df91682 100644 --- a/templates/repo/issue/view_content/pull.tmpl +++ b/templates/repo/issue/view_content/pull.tmpl @@ -343,7 +343,8 @@ (() => { const defaultMergeTitle = {{.DefaultMergeMessage}}; const defaultSquashMergeTitle = {{.DefaultSquashMergeMessage}}; - const defaultMergeMessage = 'Reviewed-on: ' + {{$.Issue.HTMLURL}} + '\n' + {{$approvers}}; + const defaultMergeMessage = {{if .DefaultMergeDetail}}{{.DefaultMergeDetail}}{{else}}'Reviewed-on: ' + {{$.Issue.HTMLURL}} + '\n' + {{$approvers}}{{end}}; + const defaultSquashMergeMessage = {{if .DefaultSquashMergeDetail}}{{.DefaultSquashMergeDetail}}{{else}}'Reviewed-on: ' + {{$.Issue.HTMLURL}} + '\n' + {{$approvers}}{{end}}; const mergeForm = { 'baseLink': {{.Link}}, 'textCancel': {{$.locale.Tr "cancel"}}, @@ -398,7 +399,7 @@ 'allowed': {{$prUnit.PullRequestsConfig.AllowSquash}}, 'textDoMerge': {{$.locale.Tr "repo.pulls.squash_merge_pull_request"}}, 'mergeTitleFieldText': defaultSquashMergeTitle, - 'mergeMessageFieldText': {{.GetCommitMessages}} + defaultMergeMessage, + 'mergeMessageFieldText': {{.GetCommitMessages}} + defaultSquashMergeMessage, 'hideAutoMerge': generalHideAutoMerge, }, { From 3054f089f060a4cd41592ba2d756fd7037f48075 Mon Sep 17 00:00:00 2001 From: Jason Song Date: Tue, 27 Dec 2022 16:31:44 +0800 Subject: [PATCH 2/8] test: fix cases --- services/pull/pull_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/pull/pull_test.go b/services/pull/pull_test.go index cbbdccce9c07..d63227a7d5e9 100644 --- a/services/pull/pull_test.go +++ b/services/pull/pull_test.go @@ -45,13 +45,13 @@ func TestPullRequest_GetDefaultMergeMessage_InternalTracker(t *testing.T) { assert.NoError(t, err) defer gitRepo.Close() - mergeMessage, err := GetDefaultMergeMessage(db.DefaultContext, gitRepo, pr, "") + mergeMessage, _, err := GetDefaultMergeMessage(db.DefaultContext, gitRepo, pr, "") assert.NoError(t, err) assert.Equal(t, "Merge pull request 'issue3' (#3) from branch2 into master", mergeMessage) pr.BaseRepoID = 1 pr.HeadRepoID = 2 - mergeMessage, err = GetDefaultMergeMessage(db.DefaultContext, gitRepo, pr, "") + mergeMessage, _, err = GetDefaultMergeMessage(db.DefaultContext, gitRepo, pr, "") assert.NoError(t, err) assert.Equal(t, "Merge pull request 'issue3' (#3) from user2/repo1:branch2 into master", mergeMessage) } @@ -75,7 +75,7 @@ func TestPullRequest_GetDefaultMergeMessage_ExternalTracker(t *testing.T) { assert.NoError(t, err) defer gitRepo.Close() - mergeMessage, err := GetDefaultMergeMessage(db.DefaultContext, gitRepo, pr, "") + mergeMessage, _, err := GetDefaultMergeMessage(db.DefaultContext, gitRepo, pr, "") assert.NoError(t, err) assert.Equal(t, "Merge pull request 'issue3' (!3) from branch2 into master", mergeMessage) @@ -84,7 +84,7 @@ func TestPullRequest_GetDefaultMergeMessage_ExternalTracker(t *testing.T) { pr.HeadRepoID = 2 pr.BaseRepo = nil pr.HeadRepo = nil - mergeMessage, err = GetDefaultMergeMessage(db.DefaultContext, gitRepo, pr, "") + mergeMessage, _, err = GetDefaultMergeMessage(db.DefaultContext, gitRepo, pr, "") assert.NoError(t, err) assert.Equal(t, "Merge pull request 'issue3' (#3) from user2/repo2:branch2 into master", mergeMessage) From 1e093023f5b493acc076b1056548847410fc6585 Mon Sep 17 00:00:00 2001 From: Jason Song Date: Tue, 27 Dec 2022 17:01:40 +0800 Subject: [PATCH 3/8] feat: expandDefaultMergeMessage --- services/pull/merge.go | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/services/pull/merge.go b/services/pull/merge.go index 87f81f7257fb..2a41c148a868 100644 --- a/services/pull/merge.go +++ b/services/pull/merge.go @@ -107,14 +107,8 @@ func GetDefaultMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr vars["ClosingIssues"] = "" } } - - templateDetail := "" - if splits := strings.SplitN(templateContent, "\n", 2); len(splits) == 2 { - templateContent = splits[0] - templateDetail = splits[1] - } - mapping := func(s string) string { return vars[s] } - return os.Expand(templateContent, mapping), os.Expand(templateDetail, mapping), nil + message, detail := expandDefaultMergeMessage(templateContent, vars) + return message, detail, nil } } @@ -134,6 +128,17 @@ func GetDefaultMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr return fmt.Sprintf("Merge pull request '%s' (%s%d) from %s:%s into %s", pr.Issue.Title, issueReference, pr.Issue.Index, pr.HeadRepo.FullName(), pr.HeadBranch, pr.BaseBranch), "", nil } +func expandDefaultMergeMessage(template string, vars map[string]string) (string, string) { + message := strings.TrimSpace(template) + detail := "" + if splits := strings.SplitN(message, "\n", 2); len(splits) == 2 { + message = splits[0] + detail = strings.TrimSpace(detail) + } + mapping := func(s string) string { return vars[s] } + return os.Expand(message, mapping), os.Expand(detail, mapping) +} + // Merge merges pull request to base repository. // Caller should check PR is ready to be merged (review and status checks) func Merge(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.User, baseGitRepo *git.Repository, mergeStyle repo_model.MergeStyle, expectedHeadCommitID, message string, wasAutoMerged bool) error { From fd0a95eb33f2fd8a6d8e10b9972653f23157f1b0 Mon Sep 17 00:00:00 2001 From: Jason Song Date: Tue, 27 Dec 2022 17:11:13 +0800 Subject: [PATCH 4/8] test: Test_expandDefaultMergeMessage --- services/pull/merge.go | 2 +- services/pull/merge_test.go | 67 +++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 services/pull/merge_test.go diff --git a/services/pull/merge.go b/services/pull/merge.go index 2a41c148a868..5e80c8578fae 100644 --- a/services/pull/merge.go +++ b/services/pull/merge.go @@ -133,7 +133,7 @@ func expandDefaultMergeMessage(template string, vars map[string]string) (string, detail := "" if splits := strings.SplitN(message, "\n", 2); len(splits) == 2 { message = splits[0] - detail = strings.TrimSpace(detail) + detail = strings.TrimSpace(splits[1]) } mapping := func(s string) string { return vars[s] } return os.Expand(message, mapping), os.Expand(detail, mapping) diff --git a/services/pull/merge_test.go b/services/pull/merge_test.go new file mode 100644 index 000000000000..cba224862dbb --- /dev/null +++ b/services/pull/merge_test.go @@ -0,0 +1,67 @@ +// Copyright 2022 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package pull + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_expandDefaultMergeMessage(t *testing.T) { + type args struct { + template string + vars map[string]string + } + tests := []struct { + name string + args args + want string + want1 string + }{ + { + name: "single line", + args: args{ + template: "Merge ${PullRequestTitle}", + vars: map[string]string{ + "PullRequestTitle": "PullRequestTitle", + "PullRequestDescription": "Pull\nRequest\nDescription\n", + }, + }, + want: "Merge PullRequestTitle", + want1: "", + }, + { + name: "multiple lines", + args: args{ + template: "Merge ${PullRequestTitle}\nDescription:\n\n${PullRequestDescription}\n", + vars: map[string]string{ + "PullRequestTitle": "PullRequestTitle", + "PullRequestDescription": "Pull\nRequest\nDescription\n", + }, + }, + want: "Merge PullRequestTitle", + want1: "Description:\n\nPull\nRequest\nDescription\n", + }, + { + name: "leading newlines", + args: args{ + template: "\n\n\nMerge ${PullRequestTitle}\n\n\nDescription:\n\n${PullRequestDescription}\n", + vars: map[string]string{ + "PullRequestTitle": "PullRequestTitle", + "PullRequestDescription": "Pull\nRequest\nDescription\n", + }, + }, + want: "Merge PullRequestTitle", + want1: "Description:\n\nPull\nRequest\nDescription\n", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, got1 := expandDefaultMergeMessage(tt.args.template, tt.args.vars) + assert.Equalf(t, tt.want, got, "expandDefaultMergeMessage(%v, %v)", tt.args.template, tt.args.vars) + assert.Equalf(t, tt.want1, got1, "expandDefaultMergeMessage(%v, %v)", tt.args.template, tt.args.vars) + }) + } +} From 7f85a48dd3510d1939109357abf557a356d17f29 Mon Sep 17 00:00:00 2001 From: Jason Song Date: Wed, 28 Dec 2022 11:40:27 +0800 Subject: [PATCH 5/8] Update services/pull/merge.go Co-authored-by: delvh --- services/pull/merge.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/pull/merge.go b/services/pull/merge.go index 0e57f48f267e..ba91e8d1e3f8 100644 --- a/services/pull/merge.go +++ b/services/pull/merge.go @@ -130,13 +130,13 @@ func GetDefaultMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr func expandDefaultMergeMessage(template string, vars map[string]string) (string, string) { message := strings.TrimSpace(template) - detail := "" + body := "" if splits := strings.SplitN(message, "\n", 2); len(splits) == 2 { message = splits[0] - detail = strings.TrimSpace(splits[1]) + body = strings.TrimSpace(splits[1]) } mapping := func(s string) string { return vars[s] } - return os.Expand(message, mapping), os.Expand(detail, mapping) + return os.Expand(message, mapping), os.Expand(body, mapping) } // Merge merges pull request to base repository. From a5f8cae98874433bf66e03b120afc4a4635be98c Mon Sep 17 00:00:00 2001 From: Jason Song Date: Wed, 28 Dec 2022 11:52:44 +0800 Subject: [PATCH 6/8] fix: rename to body --- routers/web/repo/issue.go | 6 +++--- services/pull/merge.go | 4 ++-- services/pull/merge_test.go | 22 ++++++++++----------- templates/repo/issue/view_content/pull.tmpl | 4 ++-- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/routers/web/repo/issue.go b/routers/web/repo/issue.go index e94a623c5aac..4a3eba5482a8 100644 --- a/routers/web/repo/issue.go +++ b/routers/web/repo/issue.go @@ -1664,13 +1664,13 @@ func ViewIssue(ctx *context.Context) { ctx.Data["MergeStyle"] = mergeStyle - defaultMergeMessage, defaultMergeDetail, err := pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pull, mergeStyle) + defaultMergeMessage, defaultMergeBody, err := pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pull, mergeStyle) if err != nil { ctx.ServerError("GetDefaultMergeMessage", err) return } ctx.Data["DefaultMergeMessage"] = defaultMergeMessage - ctx.Data["DefaultMergeDetail"] = defaultMergeDetail + ctx.Data["DefaultMergeBody"] = defaultMergeBody defaultSquashMergeMessage, defaultSquashMergeDetail, err := pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pull, repo_model.MergeStyleSquash) if err != nil { @@ -1678,7 +1678,7 @@ func ViewIssue(ctx *context.Context) { return } ctx.Data["DefaultSquashMergeMessage"] = defaultSquashMergeMessage - ctx.Data["DefaultSquashMergeDetail"] = defaultSquashMergeDetail + ctx.Data["DefaultSquashMergeBody"] = defaultSquashMergeBody if err = pull.LoadProtectedBranch(ctx); err != nil { ctx.ServerError("LoadProtectedBranch", err) diff --git a/services/pull/merge.go b/services/pull/merge.go index ba91e8d1e3f8..7cc40f1a4973 100644 --- a/services/pull/merge.go +++ b/services/pull/merge.go @@ -107,8 +107,8 @@ func GetDefaultMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr vars["ClosingIssues"] = "" } } - message, detail := expandDefaultMergeMessage(templateContent, vars) - return message, detail, nil + message, body := expandDefaultMergeMessage(templateContent, vars) + return message, body, nil } } diff --git a/services/pull/merge_test.go b/services/pull/merge_test.go index cba224862dbb..6df6f55d4611 100644 --- a/services/pull/merge_test.go +++ b/services/pull/merge_test.go @@ -15,10 +15,10 @@ func Test_expandDefaultMergeMessage(t *testing.T) { vars map[string]string } tests := []struct { - name string - args args - want string - want1 string + name string + args args + want string + wantBody string }{ { name: "single line", @@ -29,8 +29,8 @@ func Test_expandDefaultMergeMessage(t *testing.T) { "PullRequestDescription": "Pull\nRequest\nDescription\n", }, }, - want: "Merge PullRequestTitle", - want1: "", + want: "Merge PullRequestTitle", + wantBody: "", }, { name: "multiple lines", @@ -41,8 +41,8 @@ func Test_expandDefaultMergeMessage(t *testing.T) { "PullRequestDescription": "Pull\nRequest\nDescription\n", }, }, - want: "Merge PullRequestTitle", - want1: "Description:\n\nPull\nRequest\nDescription\n", + want: "Merge PullRequestTitle", + wantBody: "Description:\n\nPull\nRequest\nDescription\n", }, { name: "leading newlines", @@ -53,15 +53,15 @@ func Test_expandDefaultMergeMessage(t *testing.T) { "PullRequestDescription": "Pull\nRequest\nDescription\n", }, }, - want: "Merge PullRequestTitle", - want1: "Description:\n\nPull\nRequest\nDescription\n", + want: "Merge PullRequestTitle", + wantBody: "Description:\n\nPull\nRequest\nDescription\n", }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got, got1 := expandDefaultMergeMessage(tt.args.template, tt.args.vars) assert.Equalf(t, tt.want, got, "expandDefaultMergeMessage(%v, %v)", tt.args.template, tt.args.vars) - assert.Equalf(t, tt.want1, got1, "expandDefaultMergeMessage(%v, %v)", tt.args.template, tt.args.vars) + assert.Equalf(t, tt.wantBody, got1, "expandDefaultMergeMessage(%v, %v)", tt.args.template, tt.args.vars) }) } } diff --git a/templates/repo/issue/view_content/pull.tmpl b/templates/repo/issue/view_content/pull.tmpl index 554c0df91682..665f78205386 100644 --- a/templates/repo/issue/view_content/pull.tmpl +++ b/templates/repo/issue/view_content/pull.tmpl @@ -343,8 +343,8 @@ (() => { const defaultMergeTitle = {{.DefaultMergeMessage}}; const defaultSquashMergeTitle = {{.DefaultSquashMergeMessage}}; - const defaultMergeMessage = {{if .DefaultMergeDetail}}{{.DefaultMergeDetail}}{{else}}'Reviewed-on: ' + {{$.Issue.HTMLURL}} + '\n' + {{$approvers}}{{end}}; - const defaultSquashMergeMessage = {{if .DefaultSquashMergeDetail}}{{.DefaultSquashMergeDetail}}{{else}}'Reviewed-on: ' + {{$.Issue.HTMLURL}} + '\n' + {{$approvers}}{{end}}; + const defaultMergeMessage = {{if .DefaultMergeBody}}{{.DefaultMergeBody}}{{else}}'Reviewed-on: ' + {{$.Issue.HTMLURL}} + '\n' + {{$approvers}}{{end}}; + const defaultSquashMergeMessage = {{if .DefaultSquashMergeBody}}{{.DefaultSquashMergeBody}}{{else}}'Reviewed-on: ' + {{$.Issue.HTMLURL}} + '\n' + {{$approvers}}{{end}}; const mergeForm = { 'baseLink': {{.Link}}, 'textCancel': {{$.locale.Tr "cancel"}}, From 3b31644cb9a63e31197afe3f9f9f04062dae3c1c Mon Sep 17 00:00:00 2001 From: Jason Song Date: Wed, 28 Dec 2022 11:53:52 +0800 Subject: [PATCH 7/8] fix: rename to body --- routers/web/repo/issue.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routers/web/repo/issue.go b/routers/web/repo/issue.go index 4a3eba5482a8..ae2e22ee2091 100644 --- a/routers/web/repo/issue.go +++ b/routers/web/repo/issue.go @@ -1672,7 +1672,7 @@ func ViewIssue(ctx *context.Context) { ctx.Data["DefaultMergeMessage"] = defaultMergeMessage ctx.Data["DefaultMergeBody"] = defaultMergeBody - defaultSquashMergeMessage, defaultSquashMergeDetail, err := pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pull, repo_model.MergeStyleSquash) + defaultSquashMergeMessage, defaultSquashMergeBody, err := pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pull, repo_model.MergeStyleSquash) if err != nil { ctx.ServerError("GetDefaultSquashMergeMessage", err) return From 9ef05d432d6626caf1a4c4d708be0bee7f0b10e0 Mon Sep 17 00:00:00 2001 From: Jason Song Date: Wed, 28 Dec 2022 17:21:55 +0800 Subject: [PATCH 8/8] fix: use named returns --- services/pull/merge.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/services/pull/merge.go b/services/pull/merge.go index 7cc40f1a4973..7a936163f1fe 100644 --- a/services/pull/merge.go +++ b/services/pull/merge.go @@ -39,7 +39,7 @@ import ( ) // GetDefaultMergeMessage returns default message used when merging pull request -func GetDefaultMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr *issues_model.PullRequest, mergeStyle repo_model.MergeStyle) (string, string, error) { +func GetDefaultMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr *issues_model.PullRequest, mergeStyle repo_model.MergeStyle) (message, body string, err error) { if err := pr.LoadHeadRepo(ctx); err != nil { return "", "", err } @@ -107,7 +107,7 @@ func GetDefaultMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr vars["ClosingIssues"] = "" } } - message, body := expandDefaultMergeMessage(templateContent, vars) + message, body = expandDefaultMergeMessage(templateContent, vars) return message, body, nil } } @@ -128,9 +128,8 @@ func GetDefaultMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr return fmt.Sprintf("Merge pull request '%s' (%s%d) from %s:%s into %s", pr.Issue.Title, issueReference, pr.Issue.Index, pr.HeadRepo.FullName(), pr.HeadBranch, pr.BaseBranch), "", nil } -func expandDefaultMergeMessage(template string, vars map[string]string) (string, string) { - message := strings.TrimSpace(template) - body := "" +func expandDefaultMergeMessage(template string, vars map[string]string) (message, body string) { + message = strings.TrimSpace(template) if splits := strings.SplitN(message, "\n", 2); len(splits) == 2 { message = splits[0] body = strings.TrimSpace(splits[1])