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>
This commit is contained in:
		
							parent
							
								
									34df4e5df5
								
							
						
					
					
						commit
						09304db9a5
					
				
					 2 changed files with 10 additions and 22 deletions
				
			
		|  | @ -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()) | ||||
|  |  | |||
|  | @ -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) | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue