aboutsummaryrefslogtreecommitdiffstats
path: root/services/pull/pull.go
diff options
context:
space:
mode:
authorBrecht Van Lommel <brecht@blender.org>2023-03-10 04:17:04 +0100
committerGitHub <noreply@github.com>2023-03-09 22:17:04 -0500
commitd647e74502fdf734c89b3e6592a9ad88c3005971 (patch)
tree5c7c2fbd84bb95c7fffd277ccbddc4382617a597 /services/pull/pull.go
parent0141d1667d4d0e98124c11e179928a42ffe6ab1a (diff)
downloadgitea-d647e74502fdf734c89b3e6592a9ad88c3005971.tar.gz
gitea-d647e74502fdf734c89b3e6592a9ad88c3005971.zip
Improve squash merge commit author and co-author with private emails (#22977)
When emails addresses are private, squash merges always use `@noreply.localhost` for the author of the squash commit. And the author is redundantly added as a co-author in the commit message. Also without private mails, the redundant co-author is possible when committing with a signature that's different than the user full name and primary email. Now try to find a commit by the same user in the list of commits, and prefer the signature from that over one constructed from the account settings.
Diffstat (limited to 'services/pull/pull.go')
-rw-r--r--services/pull/pull.go12
1 files changed, 10 insertions, 2 deletions
diff --git a/services/pull/pull.go b/services/pull/pull.go
index d8923d0d57..e40e59a2c5 100644
--- a/services/pull/pull.go
+++ b/services/pull/pull.go
@@ -669,7 +669,12 @@ func GetSquashMergeCommitMessages(ctx context.Context, pr *issues_model.PullRequ
authorString := commit.Author.String()
if uniqueAuthors.Add(authorString) && authorString != posterSig {
- authors = append(authors, authorString)
+ // Compare use account as well to avoid adding the same author multiple times
+ // times when email addresses are private or multiple emails are used.
+ commitUser, _ := user_model.GetUserByEmail(ctx, commit.Author.Email)
+ if commitUser == nil || commitUser.ID != pr.Issue.Poster.ID {
+ authors = append(authors, authorString)
+ }
}
}
@@ -690,7 +695,10 @@ func GetSquashMergeCommitMessages(ctx context.Context, pr *issues_model.PullRequ
for _, commit := range commits {
authorString := commit.Author.String()
if uniqueAuthors.Add(authorString) && authorString != posterSig {
- authors = append(authors, authorString)
+ commitUser, _ := user_model.GetUserByEmail(ctx, commit.Author.Email)
+ if commitUser == nil || commitUser.ID != pr.Issue.Poster.ID {
+ authors = append(authors, authorString)
+ }
}
}
skip += limit