aboutsummaryrefslogtreecommitdiff
path: root/internal/route
diff options
context:
space:
mode:
Diffstat (limited to 'internal/route')
-rw-r--r--internal/route/repo/commit.go31
-rw-r--r--internal/route/repo/pull.go4
2 files changed, 30 insertions, 5 deletions
diff --git a/internal/route/repo/commit.go b/internal/route/repo/commit.go
index da8c5e48..f82336d9 100644
--- a/internal/route/repo/commit.go
+++ b/internal/route/repo/commit.go
@@ -61,7 +61,7 @@ func renderCommits(c *context.Context, filename string) {
}
commits = RenderIssueLinks(commits, c.Repo.RepoLink)
- c.Data["Commits"] = db.ValidateCommitsWithEmails(commits)
+ c.Data["Commits"] = matchUsersWithCommitEmails(c.Req.Context(), commits)
if page > 1 {
c.Data["HasPrevious"] = true
@@ -98,7 +98,7 @@ func SearchCommits(c *context.Context) {
}
commits = RenderIssueLinks(commits, c.Repo.RepoLink)
- c.Data["Commits"] = db.ValidateCommitsWithEmails(commits)
+ c.Data["Commits"] = matchUsersWithCommitEmails(c.Req.Context(), commits)
c.Data["Keyword"] = keyword
c.Data["Username"] = c.Repo.Owner.Name
@@ -188,6 +188,31 @@ func RawDiff(c *context.Context) {
}
}
+type userCommit struct {
+ User *db.User
+ *git.Commit
+}
+
+// matchUsersWithCommitEmails matches existing users using commit author emails.
+func matchUsersWithCommitEmails(ctx gocontext.Context, oldCommits []*git.Commit) []*userCommit {
+ emailToUsers := make(map[string]*db.User)
+ newCommits := make([]*userCommit, len(oldCommits))
+ for i := range oldCommits {
+ var u *db.User
+ if v, ok := emailToUsers[oldCommits[i].Author.Email]; !ok {
+ emailToUsers[oldCommits[i].Author.Email], _ = db.Users.GetByEmail(ctx, oldCommits[i].Author.Email)
+ } else {
+ u = v
+ }
+
+ newCommits[i] = &userCommit{
+ User: u,
+ Commit: oldCommits[i],
+ }
+ }
+ return newCommits
+}
+
func CompareDiff(c *context.Context) {
c.Data["IsDiffCompare"] = true
userName := c.Repo.Owner.Name
@@ -218,7 +243,7 @@ func CompareDiff(c *context.Context) {
c.Data["IsSplitStyle"] = c.Query("style") == "split"
c.Data["CommitRepoLink"] = c.Repo.RepoLink
- c.Data["Commits"] = db.ValidateCommitsWithEmails(commits)
+ c.Data["Commits"] = matchUsersWithCommitEmails(c.Req.Context(), commits)
c.Data["CommitsCount"] = len(commits)
c.Data["BeforeCommitID"] = beforeCommitID
c.Data["AfterCommitID"] = afterCommitID
diff --git a/internal/route/repo/pull.go b/internal/route/repo/pull.go
index 2429ff8b..7eedcb3a 100644
--- a/internal/route/repo/pull.go
+++ b/internal/route/repo/pull.go
@@ -298,7 +298,7 @@ func ViewPullCommits(c *context.Context) {
commits = prInfo.Commits
}
- c.Data["Commits"] = db.ValidateCommitsWithEmails(commits)
+ c.Data["Commits"] = matchUsersWithCommitEmails(c.Req.Context(), commits)
c.Data["CommitsCount"] = len(commits)
c.Success(PULL_COMMITS)
@@ -606,7 +606,7 @@ func PrepareCompareDiff(
return false
}
- c.Data["Commits"] = db.ValidateCommitsWithEmails(meta.Commits)
+ c.Data["Commits"] = matchUsersWithCommitEmails(c.Req.Context(), meta.Commits)
c.Data["CommitCount"] = len(meta.Commits)
c.Data["Username"] = headUser.Name
c.Data["Reponame"] = headRepo.Name