Skip to content

Commit 975cd35

Browse files
committed
feat: support merge message detail
1 parent 90237d8 commit 975cd35

File tree

5 files changed

+27
-20
lines changed

5 files changed

+27
-20
lines changed

routers/api/v1/repo/pull.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -815,7 +815,7 @@ func MergePullRequest(ctx *context.APIContext) {
815815

816816
message := strings.TrimSpace(form.MergeTitleField)
817817
if len(message) == 0 {
818-
message, err = pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pr, repo_model.MergeStyle(form.Do))
818+
message, _, err = pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pr, repo_model.MergeStyle(form.Do))
819819
if err != nil {
820820
ctx.Error(http.StatusInternalServerError, "GetDefaultMergeMessage", err)
821821
return

routers/web/repo/issue.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1664,19 +1664,21 @@ func ViewIssue(ctx *context.Context) {
16641664

16651665
ctx.Data["MergeStyle"] = mergeStyle
16661666

1667-
defaultMergeMessage, err := pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pull, mergeStyle)
1667+
defaultMergeMessage, defaultMergeDetail, err := pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pull, mergeStyle)
16681668
if err != nil {
16691669
ctx.ServerError("GetDefaultMergeMessage", err)
16701670
return
16711671
}
16721672
ctx.Data["DefaultMergeMessage"] = defaultMergeMessage
1673+
ctx.Data["DefaultMergeDetail"] = defaultMergeDetail
16731674

1674-
defaultSquashMergeMessage, err := pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pull, repo_model.MergeStyleSquash)
1675+
defaultSquashMergeMessage, defaultSquashMergeDetail, err := pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pull, repo_model.MergeStyleSquash)
16751676
if err != nil {
16761677
ctx.ServerError("GetDefaultSquashMergeMessage", err)
16771678
return
16781679
}
16791680
ctx.Data["DefaultSquashMergeMessage"] = defaultSquashMergeMessage
1681+
ctx.Data["DefaultSquashMergeDetail"] = defaultSquashMergeDetail
16801682

16811683
if err = pull.LoadProtectedBranch(ctx); err != nil {
16821684
ctx.ServerError("LoadProtectedBranch", err)

routers/web/repo/pull.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -973,7 +973,7 @@ func MergePullRequest(ctx *context.Context) {
973973
message := strings.TrimSpace(form.MergeTitleField)
974974
if len(message) == 0 {
975975
var err error
976-
message, err = pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pr, repo_model.MergeStyle(form.Do))
976+
message, _, err = pull_service.GetDefaultMergeMessage(ctx, ctx.Repo.GitRepo, pr, repo_model.MergeStyle(form.Do))
977977
if err != nil {
978978
ctx.ServerError("GetDefaultMergeMessage", err)
979979
return

services/pull/merge.go

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,19 +39,19 @@ import (
3939
)
4040

4141
// GetDefaultMergeMessage returns default message used when merging pull request
42-
func GetDefaultMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr *issues_model.PullRequest, mergeStyle repo_model.MergeStyle) (string, error) {
42+
func GetDefaultMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr *issues_model.PullRequest, mergeStyle repo_model.MergeStyle) (string, string, error) {
4343
if err := pr.LoadHeadRepo(ctx); err != nil {
44-
return "", err
44+
return "", "", err
4545
}
4646
if err := pr.LoadBaseRepo(ctx); err != nil {
47-
return "", err
47+
return "", "", err
4848
}
4949
if pr.BaseRepo == nil {
50-
return "", repo_model.ErrRepoNotExist{ID: pr.BaseRepoID}
50+
return "", "", repo_model.ErrRepoNotExist{ID: pr.BaseRepoID}
5151
}
5252

5353
if err := pr.LoadIssue(ctx); err != nil {
54-
return "", err
54+
return "", "", err
5555
}
5656

5757
isExternalTracker := pr.BaseRepo.UnitEnabled(ctx, unit.TypeExternalTracker)
@@ -64,12 +64,12 @@ func GetDefaultMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr
6464
templateFilepath := fmt.Sprintf(".gitea/default_merge_message/%s_TEMPLATE.md", strings.ToUpper(string(mergeStyle)))
6565
commit, err := baseGitRepo.GetBranchCommit(pr.BaseRepo.DefaultBranch)
6666
if err != nil {
67-
return "", err
67+
return "", "", err
6868
}
6969
templateContent, err := commit.GetFileContent(templateFilepath, setting.Repository.PullRequest.DefaultMergeMessageSize)
7070
if err != nil {
7171
if !git.IsErrNotExist(err) {
72-
return "", err
72+
return "", "", err
7373
}
7474
} else {
7575
vars := map[string]string{
@@ -108,26 +108,30 @@ func GetDefaultMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr
108108
}
109109
}
110110

111-
return os.Expand(templateContent, func(s string) string {
112-
return vars[s]
113-
}), nil
111+
templateDetail := ""
112+
if splits := strings.SplitN(templateContent, "\n", 2); len(splits) == 2 {
113+
templateContent = splits[0]
114+
templateDetail = splits[1]
115+
}
116+
mapping := func(s string) string { return vars[s] }
117+
return os.Expand(templateContent, mapping), os.Expand(templateDetail, mapping), nil
114118
}
115119
}
116120

117121
// Squash merge has a different from other styles.
118122
if mergeStyle == repo_model.MergeStyleSquash {
119-
return fmt.Sprintf("%s (%s%d)", pr.Issue.Title, issueReference, pr.Issue.Index), nil
123+
return fmt.Sprintf("%s (%s%d)", pr.Issue.Title, issueReference, pr.Issue.Index), "", nil
120124
}
121125

122126
if pr.BaseRepoID == pr.HeadRepoID {
123-
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
127+
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
124128
}
125129

126130
if pr.HeadRepo == nil {
127-
return fmt.Sprintf("Merge pull request '%s' (%s%d) from <deleted>:%s into %s", pr.Issue.Title, issueReference, pr.Issue.Index, pr.HeadBranch, pr.BaseBranch), nil
131+
return fmt.Sprintf("Merge pull request '%s' (%s%d) from <deleted>:%s into %s", pr.Issue.Title, issueReference, pr.Issue.Index, pr.HeadBranch, pr.BaseBranch), "", nil
128132
}
129133

130-
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
134+
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
131135
}
132136

133137
// Merge merges pull request to base repository.

templates/repo/issue/view_content/pull.tmpl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,8 @@
343343
(() => {
344344
const defaultMergeTitle = {{.DefaultMergeMessage}};
345345
const defaultSquashMergeTitle = {{.DefaultSquashMergeMessage}};
346-
const defaultMergeMessage = 'Reviewed-on: ' + {{$.Issue.HTMLURL}} + '\n' + {{$approvers}};
346+
const defaultMergeMessage = {{if .DefaultMergeDetail}}{{.DefaultMergeDetail}}{{else}}'Reviewed-on: ' + {{$.Issue.HTMLURL}} + '\n' + {{$approvers}}{{end}};
347+
const defaultSquashMergeMessage = {{if .DefaultSquashMergeDetail}}{{.DefaultSquashMergeDetail}}{{else}}'Reviewed-on: ' + {{$.Issue.HTMLURL}} + '\n' + {{$approvers}}{{end}};
347348
const mergeForm = {
348349
'baseLink': {{.Link}},
349350
'textCancel': {{$.locale.Tr "cancel"}},
@@ -398,7 +399,7 @@
398399
'allowed': {{$prUnit.PullRequestsConfig.AllowSquash}},
399400
'textDoMerge': {{$.locale.Tr "repo.pulls.squash_merge_pull_request"}},
400401
'mergeTitleFieldText': defaultSquashMergeTitle,
401-
'mergeMessageFieldText': {{.GetCommitMessages}} + defaultMergeMessage,
402+
'mergeMessageFieldText': {{.GetCommitMessages}} + defaultSquashMergeMessage,
402403
'hideAutoMerge': generalHideAutoMerge,
403404
},
404405
{

0 commit comments

Comments
 (0)