Allow including Reviewed-on
/Reviewed-by
lines for custom merge messages (#31211)
This PR introduces the `ReviewedOn` and `ReviewedBy` variables for the default merge message templates (e.g., `.gitea/default_merge_message/MERGE_TEMPLATE.md`). This allows customizing the default merge messages while retaining these trailers. This also moves the associated logic out of `pull.tmpl` into the relevant Go function. This is a first contribution towards #11077. --- For illustration, this allows to recreate the "default default" merge message with the following template: ``` .gitea/default_merge_message/MERGE_TEMPLATE.md Merge pull request '${PullRequestTitle}' (${PullRequestReference}) from ${HeadBranch} into ${BaseBranch} ${ReviewedOn} ${ReviewedBy} ```
This commit is contained in:
parent
f7125ab61a
commit
da4bbc4247
@ -44,6 +44,8 @@ You can use the following variables enclosed in `${}` inside these templates whi
|
|||||||
- PullRequestIndex: Pull request's index number
|
- PullRequestIndex: Pull request's index number
|
||||||
- PullRequestReference: Pull request's reference char with index number. i.e. #1, !2
|
- PullRequestReference: Pull request's reference char with index number. i.e. #1, !2
|
||||||
- ClosingIssues: return a string contains all issues which will be closed by this pull request i.e. `close #1, close #2`
|
- ClosingIssues: return a string contains all issues which will be closed by this pull request i.e. `close #1, close #2`
|
||||||
|
- ReviewedOn: Which pull request this commit belongs to. For example `Reviewed-on: https://gitea.com/foo/bar/pulls/1`
|
||||||
|
- ReviewedBy: Who approved the pull request before the merge. For example `Reviewed-by: Jane Doe <jane.doe@example.com>`
|
||||||
|
|
||||||
## Rebase
|
## Rebase
|
||||||
|
|
||||||
|
@ -46,6 +46,9 @@ func getMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr *issue
|
|||||||
if err := pr.Issue.LoadPoster(ctx); err != nil {
|
if err := pr.Issue.LoadPoster(ctx); err != nil {
|
||||||
return "", "", err
|
return "", "", err
|
||||||
}
|
}
|
||||||
|
if err := pr.Issue.LoadRepo(ctx); err != nil {
|
||||||
|
return "", "", err
|
||||||
|
}
|
||||||
|
|
||||||
isExternalTracker := pr.BaseRepo.UnitEnabled(ctx, unit.TypeExternalTracker)
|
isExternalTracker := pr.BaseRepo.UnitEnabled(ctx, unit.TypeExternalTracker)
|
||||||
issueReference := "#"
|
issueReference := "#"
|
||||||
@ -53,6 +56,9 @@ func getMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr *issue
|
|||||||
issueReference = "!"
|
issueReference = "!"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reviewedOn := fmt.Sprintf("Reviewed-on: %s/%s", setting.AppURL, pr.Issue.Link())
|
||||||
|
reviewedBy := pr.GetApprovers(ctx)
|
||||||
|
|
||||||
if mergeStyle != "" {
|
if mergeStyle != "" {
|
||||||
templateFilepath := fmt.Sprintf(".gitea/default_merge_message/%s_TEMPLATE.md", strings.ToUpper(string(mergeStyle)))
|
templateFilepath := fmt.Sprintf(".gitea/default_merge_message/%s_TEMPLATE.md", strings.ToUpper(string(mergeStyle)))
|
||||||
commit, err := baseGitRepo.GetBranchCommit(pr.BaseRepo.DefaultBranch)
|
commit, err := baseGitRepo.GetBranchCommit(pr.BaseRepo.DefaultBranch)
|
||||||
@ -77,6 +83,8 @@ func getMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr *issue
|
|||||||
"PullRequestPosterName": pr.Issue.Poster.Name,
|
"PullRequestPosterName": pr.Issue.Poster.Name,
|
||||||
"PullRequestIndex": strconv.FormatInt(pr.Index, 10),
|
"PullRequestIndex": strconv.FormatInt(pr.Index, 10),
|
||||||
"PullRequestReference": fmt.Sprintf("%s%d", issueReference, pr.Index),
|
"PullRequestReference": fmt.Sprintf("%s%d", issueReference, pr.Index),
|
||||||
|
"ReviewedOn": reviewedOn,
|
||||||
|
"ReviewedBy": reviewedBy,
|
||||||
}
|
}
|
||||||
if pr.HeadRepo != nil {
|
if pr.HeadRepo != nil {
|
||||||
vars["HeadRepoOwnerName"] = pr.HeadRepo.OwnerName
|
vars["HeadRepoOwnerName"] = pr.HeadRepo.OwnerName
|
||||||
@ -116,20 +124,22 @@ func getMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr *issue
|
|||||||
return "", "", nil
|
return "", "", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body = fmt.Sprintf("%s\n%s", reviewedOn, reviewedBy)
|
||||||
|
|
||||||
// Squash merge has a different from other styles.
|
// Squash merge has a different from other styles.
|
||||||
if mergeStyle == repo_model.MergeStyleSquash {
|
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), body, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if pr.BaseRepoID == pr.HeadRepoID {
|
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), body, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if pr.HeadRepo == nil {
|
if pr.HeadRepo == nil {
|
||||||
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
|
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), body, 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), body, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func expandDefaultMergeMessage(template string, vars map[string]string) (message, body string) {
|
func expandDefaultMergeMessage(template string, vars map[string]string) (message, body string) {
|
||||||
|
@ -199,7 +199,6 @@
|
|||||||
|
|
||||||
{{if .AllowMerge}} {{/* user is allowed to merge */}}
|
{{if .AllowMerge}} {{/* user is allowed to merge */}}
|
||||||
{{$prUnit := .Repository.MustGetUnit $.Context ctx.Consts.RepoUnitTypePullRequests}}
|
{{$prUnit := .Repository.MustGetUnit $.Context ctx.Consts.RepoUnitTypePullRequests}}
|
||||||
{{$approvers := (.Issue.PullRequest.GetApprovers ctx)}}
|
|
||||||
{{if or $prUnit.PullRequestsConfig.AllowMerge $prUnit.PullRequestsConfig.AllowRebase $prUnit.PullRequestsConfig.AllowRebaseMerge $prUnit.PullRequestsConfig.AllowSquash $prUnit.PullRequestsConfig.AllowFastForwardOnly}}
|
{{if or $prUnit.PullRequestsConfig.AllowMerge $prUnit.PullRequestsConfig.AllowRebase $prUnit.PullRequestsConfig.AllowRebaseMerge $prUnit.PullRequestsConfig.AllowSquash $prUnit.PullRequestsConfig.AllowFastForwardOnly}}
|
||||||
{{$hasPendingPullRequestMergeTip := ""}}
|
{{$hasPendingPullRequestMergeTip := ""}}
|
||||||
{{if .HasPendingPullRequestMerge}}
|
{{if .HasPendingPullRequestMerge}}
|
||||||
@ -208,11 +207,10 @@
|
|||||||
{{end}}
|
{{end}}
|
||||||
<div class="divider"></div>
|
<div class="divider"></div>
|
||||||
<script type="module">
|
<script type="module">
|
||||||
const issueUrl = window.location.origin + {{$.Issue.Link}};
|
|
||||||
const defaultMergeTitle = {{.DefaultMergeMessage}};
|
const defaultMergeTitle = {{.DefaultMergeMessage}};
|
||||||
const defaultSquashMergeTitle = {{.DefaultSquashMergeMessage}};
|
const defaultSquashMergeTitle = {{.DefaultSquashMergeMessage}};
|
||||||
const defaultMergeMessage = {{if .DefaultMergeBody}}{{.DefaultMergeBody}}{{else}}`Reviewed-on: ${issueUrl}\n` + {{$approvers}}{{end}};
|
const defaultMergeMessage = {{.DefaultMergeBody}};
|
||||||
const defaultSquashMergeMessage = {{if .DefaultSquashMergeBody}}{{.DefaultSquashMergeBody}}{{else}}`Reviewed-on: ${issueUrl}\n` + {{$approvers}}{{end}};
|
const defaultSquashMergeMessage = {{.DefaultSquashMergeBody}};
|
||||||
const mergeForm = {
|
const mergeForm = {
|
||||||
'baseLink': {{.Link}},
|
'baseLink': {{.Link}},
|
||||||
'textCancel': {{ctx.Locale.Tr "cancel"}},
|
'textCancel': {{ctx.Locale.Tr "cancel"}},
|
||||||
|
Loading…
Reference in New Issue
Block a user