修复“贡献者”视图,以便正确合并具有不同用户名和/或地址的用户

Mär*_*Mär 6 gitlab

问题陈述

我帮助维护的一个项目中的GitLab贡献者视图已经“损坏”了一段时间了。看来 GitLab 无法理解某些用户名和/或电子邮件地址属于同一用户。

目前,我们的 GitLab贡献者视图显示以下内容:

Dev A <dev_a@company.com>
DevB  <dev_b@company.com>
devb  <dev_b@private.com>
Dev C <dev_c@company.com>
Dev D <dev_d@private.com>
Dev D <dev_d@company.com>
DevD  <dev_d@company.com>
...
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,有些人是相同的,尽管他们由不同的贡献者条目代表。在本表中,此类示例包括:

  • 开发B
  • 开发D

其中开发人员 B 有两个用户名,分别与不同的电子邮件地址相关联,而开发人员 D 具有与两个地址相关联的相同用户名,以及与两个不同用户名相关联的相同地址。


尝试过的解决方案

最初尝试通过 GitLab 提供的 Web UI 来解决此问题。在GitLab > 用户设置 > 电子邮件中,电子邮件可以与帐户关联。对于Dev D的个人资料,如下所示:

dev_d@company.com (Verified) [Primary email][Commit email][Default notification email]
dev_d@education.com (Verified)
dev_d@private.com (Verified)
Run Code Online (Sandbox Code Playgroud)

到目前为止,这表明两者<dev_d@company.com><dev_d@private.com>与同一帐户关联。这不足以让 GitLab 将这些地址映射到贡献者视图中的同一用户。

我们进行了第二次尝试,提供了一个.mailmap文件,其中包含主用户名/电子邮件地址到辅助用户名/电子邮件地址的映射。

当前.mailmap文件如下所示:

Dev A <dev_a@company.com>
Dev C <dev_c@company.com>
Dev B <dev_b@company.com> DevB <dev_b@company.com>
Dev B <dev_b@company.com> devb <dev_b@private.com>
Dev D <dev_d@company.com> Dev D <dev_d@private.com>
Dev D <dev_d@company.com> DevD <dev_d@company.com>
...
Run Code Online (Sandbox Code Playgroud)

当在项目根目录中git shortlog -se本地调用时.mailmap,结果似乎是正确的。每个用户仅被提及一次(当不.mailmap存在文件时,则不会被提及),显示正确的主要电子邮件并累积提交。

这也是提交、推送的,因此 GitLab 应该知道,但是邮件映射文件当前存在于分支上,而不是主分支上。但这不是障碍,因为贡献者视图也可以显示分支。提供的文件.mailmap使贡献者的视图完全不受影响。代表相同用户的所有别名仍然未合并,并且不分别与用户和彼此关联。



问题

如何修复贡献者视图,以便当不同的用户名和/或不同的电子邮件地址属于同一个人时可以关联它们?