3

Gitosis 能够基于公钥/私钥对对用户进行身份验证。它能够找出当前正在提交的用户。但是,用户名和电子邮件取自客户端的 Git 配置('git config user.name' 等),可以设置为任意值。有什么方法可以将用户名和邮箱关联到他们的公钥,然后让 Gitosis 使用这些名字和邮箱作为提交者的名字和邮箱?

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

4

2 回答 2

2

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

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

于 2013-04-13T17:15:04.777 回答
1

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

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

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

请注意,检查提交的作者身份是没有意义的,因为它们可能来自通过电子邮件发送的补丁(提交者应该在应用之前检查它们),或者来自樱桃采摘或变基。

于 2010-04-18T10:51:53.717 回答