Gitosis可以强制执行正确的用户名/电子邮件吗?

时间:2010-04-17 16:16:26

标签: git gitosis

Gitosis能够根据公钥/私钥对验证用户。它能够找出当前正在提交的用户。但是,用户名和电子邮件来自客户端的Git配置('git config user.name'等),可以设置为任意值。有没有办法将用户名和电子邮件与他们的公钥相关联,然后让Gitosis使用这些名称和电子邮件作为提交者的姓名和电子邮件?

我不在乎我是否会使用Gitosis或WebDAV或其他替代方案来共享存储库。在我看来,没有一种可用的方法支持使用某种“正确”用户名和电子邮件的强制执行。如果有其他选择,请告诉我。

2 个答案:

答案 0 :(得分:2)

注意,您不能让服务器实际设置(覆盖)作者或提交者,因为要使其工作,它必须修改完全构建的提交对象(以及基于此的所有提交)。

这将改变提交的哈希/ id。所以你只能拒绝它们。 (从技术上讲,你当然可以创建一个新的提交,但这会导致各种问题。)

答案 1 :(得分:1)

Git源代码中的示例update-paranoid挂钩执行以下检查:

  

对于所有新提交或标记对象,提交者(或标记)行   对象内的必须与user.committer之一完全匹配   acl文件中列出的值。

我想可以配置GitosisGitolite进行类似的检查,或者您可以编写自己的upatepre-receive挂钩。在所有这些情况下,推送必须通过“智能”传输完成,可以使用Git。这意味着通过SSH或“智能”HTTP(git-http-backend)推送;它排除了通过WebDAV推送(“哑”HTTP(S))。

请注意,检查提交的作者身份没有意义,因为它们可能来自通过电子邮件发送的补丁(应用程序之前应该检查它们的提交者),或者来自挑选或重新定位。