]> source.dussan.org Git - gitea.git/commitdiff
Use the text of pull-request as the squash commit's message (#13071)
authorMura Li <2606021+typeless@users.noreply.github.com>
Mon, 21 Dec 2020 16:46:14 +0000 (00:46 +0800)
committerGitHub <noreply@github.com>
Mon, 21 Dec 2020 16:46:14 +0000 (17:46 +0100)
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>
routers/repo/pull.go
services/pull/pull.go

index 442379c43b920146ffb7b72305dfc798e6f20996..b3a1478884cf5ccf78d370545847222564df1bdf 100644 (file)
@@ -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())
index 499bafff1e4f2ce31918fdf87c48fc1ebd15020b..99db0784200586ec58a58aea6802104e38c2af0d 100644 (file)
@@ -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)