如果您看到.gitconfig
文件,它包含用户名和电子邮件地址。我希望保护它不受用户的影响,因为他们总是可以掩盖他们的身份,因为它仍然可以由用户配置。
例如,在我的公司目录中,我的名字如下 Gerald, Anthony(姓氏,拳头名)。
人们在这里犯了什么错误,一些用户指定他们的名字如下
- 杰拉德
- 安东尼
- 遗传算法
- 安东尼
- 杰拉尔
- 等等
这会造成混淆,因为它不包含真实信息。
让我知道你们如何管理用户身份
如果您看到.gitconfig
文件,它包含用户名和电子邮件地址。我希望保护它不受用户的影响,因为他们总是可以掩盖他们的身份,因为它仍然可以由用户配置。
例如,在我的公司目录中,我的名字如下 Gerald, Anthony(姓氏,拳头名)。
人们在这里犯了什么错误,一些用户指定他们的名字如下
这会造成混淆,因为它不包含真实信息。
让我知道你们如何管理用户身份
这是一个社会问题,应该通过社会手段来解决。
如果您真的想确定谁签入了某些东西,您应该使用签名标签(使用由某个公司中心 CA 签名的公钥)。
你不能单独使用 Git 来强制执行(除非你正在重新考虑所有分布式模型),但如果你在 Git 存储库服务器周围有一些封装,比如 gitolite,你可以使用一些脚本来检查用户名:
Gitolite特定脚本用于检查每个提交的提交的“作者电子邮件”字段,如果此电子邮件与用户推送的预期电子邮件不匹配,则不允许。
该脚本中包含的“哲学笔记”非常生硬,但也很重要;)
这样做会破坏“ DVCS ”中的“ D ” ,就推送而言,迫使所有开发人员使用集中式模型。 它可以防止修改其他人的提交和推送(这包括变基、挑选等,现在这些都是不可能的)。 这也使得两个开发人员之间的任何离线协作都毫无用处,因为他们都无法将结果推送到服务器。
PHB 应该注意,验证提交者 ID 与查看代码并在其上运行 QA/测试不同。如果您不审查/ QA-ing 代码,它可能无论如何都毫无价值。相反,如果您要查看代码并运行 QA/测试,那么您真的不需要验证作者的电子邮件!
在 DVCS 中,如果您推送了一系列提交,那么您在某种意义上已经签署了它们。“签署”系列的最正式方式是附加并推送一个 gpg 签名的标签,尽管大多数人并没有走那么远。
不过,Gitolite 的日志文件旨在在一定程度上保留这种责任。请参阅 contrib/adc/who-pushed 以获取管理员定义的命令,该命令可以快速轻松地告诉您谁推送了特定的提交。无论如何,关键是这个脚本的唯一目的是
- 迎合还没摸过*D*VCS的人
- 或者在一些愚蠢的 PHB 清单中打勾
保护 .gitconfig 并不能解决问题,因为用户可以通过设置 GIT_AUTHOR_NAME 和 GIT_AUTHOR_EMAIL 来覆盖这些设置。
可以将签名标签添加到提交以提供某种验证。