aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMura Li <2606021+typeless@users.noreply.github.com>2020-12-22 00:46:14 +0800
committerGitHub <noreply@github.com>2020-12-21 17:46:14 +0100
commit09304db9a5d88c035a96f74a4544572bc8c5dac0 (patch)
tree19d4c329b6f6e5aa7ebce73af6b51d267e527c31
parent34df4e5df558e7ec648efe083696687be6f8c8a8 (diff)
downloadgitea-09304db9a5d88c035a96f74a4544572bc8c5dac0.tar.gz
gitea-09304db9a5d88c035a96f74a4544572bc8c5dac0.zip
Use the text of pull-request as the squash commit's message (#13071)
Originally, it was filled by the commit messages of the involved commits. In this change, we use the headline comment of the pull request as the commit message when it is a squash merge. Thanks to @zeripath for suggesting the idea. Fixes #12365 Co-authored-by: Mura Li <typeless@users.noreply.github.com>
-rw-r--r--routers/repo/pull.go2
-rw-r--r--services/pull/pull.go30
2 files changed, 10 insertions, 22 deletions
diff --git a/routers/repo/pull.go b/routers/repo/pull.go
index 442379c43b..b3a1478884 100644
--- a/routers/repo/pull.go
+++ b/routers/repo/pull.go
@@ -440,7 +440,7 @@ func PrepareViewPullInfo(ctx *context.Context, issue *models.Issue) *git.Compare
ctx.ServerError("IsUserAllowedToUpdate", err)
return nil
}
- ctx.Data["GetCommitMessages"] = pull_service.GetCommitMessages(pull)
+ ctx.Data["GetCommitMessages"] = pull_service.GetSquashMergeCommitMessages(pull)
}
sha, err := baseGitRepo.GetRefCommitID(pull.GetGitRefName())
diff --git a/services/pull/pull.go b/services/pull/pull.go
index 499bafff1e..99db078420 100644
--- a/services/pull/pull.go
+++ b/services/pull/pull.go
@@ -502,8 +502,8 @@ func CloseRepoBranchesPulls(doer *models.User, repo *models.Repository) error {
return nil
}
-// GetCommitMessages returns the commit messages between head and merge base (if there is one)
-func GetCommitMessages(pr *models.PullRequest) string {
+// GetSquashMergeCommitMessages returns the commit messages between head and merge base (if there is one)
+func GetSquashMergeCommitMessages(pr *models.PullRequest) string {
if err := pr.LoadIssue(); err != nil {
log.Error("Cannot load issue %d for PR id %d: Error: %v", pr.IssueID, pr.ID, err)
return ""
@@ -550,34 +550,22 @@ func GetCommitMessages(pr *models.PullRequest) string {
return ""
}
- maxSize := setting.Repository.PullRequest.DefaultMergeMessageSize
-
posterSig := pr.Issue.Poster.NewGitSig().String()
authorsMap := map[string]bool{}
authors := make([]string, 0, list.Len())
stringBuilder := strings.Builder{}
+
+ stringBuilder.WriteString(pr.Issue.Content)
+ if stringBuilder.Len() > 0 {
+ stringBuilder.WriteRune('\n')
+ stringBuilder.WriteRune('\n')
+ }
+
// commits list is in reverse chronological order
element := list.Back()
for element != nil {
commit := element.Value.(*git.Commit)
-
- if maxSize < 0 || stringBuilder.Len() < maxSize {
- toWrite := []byte(commit.CommitMessage)
- if len(toWrite) > maxSize-stringBuilder.Len() && maxSize > -1 {
- toWrite = append(toWrite[:maxSize-stringBuilder.Len()], "..."...)
- }
- if _, err := stringBuilder.Write(toWrite); err != nil {
- log.Error("Unable to write commit message Error: %v", err)
- return ""
- }
-
- if _, err := stringBuilder.WriteRune('\n'); err != nil {
- log.Error("Unable to write commit message Error: %v", err)
- return ""
- }
- }
-
authorString := commit.Author.String()
if !authorsMap[authorString] && authorString != posterSig {
authors = append(authors, authorString)