diff options
author | Brecht Van Lommel <brecht@blender.org> | 2023-03-10 04:17:04 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-09 22:17:04 -0500 |
commit | d647e74502fdf734c89b3e6592a9ad88c3005971 (patch) | |
tree | 5c7c2fbd84bb95c7fffd277ccbddc4382617a597 /services/pull/pull.go | |
parent | 0141d1667d4d0e98124c11e179928a42ffe6ab1a (diff) | |
download | gitea-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.go | 12 |
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 |