【发布时间】:2022-01-05 21:15:06
【问题描述】:
我目前正在尝试将我的 gitlab 项目中的每一个提交都放在数据库中。我还有一个包含项目所有用户的表,我想与 Commit 表连接。
我通过命令 1-for user in self.project.users.list(all = True) 获取项目的所有用户。
我通过命令 2-for c in self.project.commits.list(all = True): 获得所有提交。
我试图使用每个提交的.author_name 属性将提交与用户相关联。但我注意到项目中的一些人在项目中更改了他们的名字,现在我从命令 1 获得的名字与通过 .author_name 属性给出的名字不同。
有没有办法解决这个问题?
【问题讨论】:
-
作者姓名、作者邮箱、提交者姓名和提交者邮箱是用户自定义的。 Git 允许用户使用任何有效的字符串来设置这些属性。如果没有映射表,Git 不知道哪些姓名/电子邮件属于同一用户。 Git 有邮件映射,git-scm.com/docs/gitmailmap。邮件映射帮助 git 命令将多个名称/电子邮件视为同一个用户。但是您仍然需要手动维护邮件映射。
-
不幸的是,由于@ElpieKay 提到的原因,无法追溯处理此问题。为了使这种关联在未来更加可靠,您可以配置推送规则以要求提交者电子邮件与现有 GitLab 用户匹配。这样,您可以关联提交电子邮件并确保具有相同电子邮件的相应 GitLab 用户应该存在。但是,用户可以更改自己的电子邮件,这可能会导致您遇到的相同原则问题。另一种可能的方式可能是要求对所有提交进行 GPG 签名,然后您可以使用它来更积极地识别用户。
标签: python git gitlab gitlab-api