我正在尝试通过ssh设置共享git存储库,将用户公钥复制到authorized_keys。我真的很喜欢ssh-key中的“用户名”成为repo中提交历史的一部分(因此用户“joe”不能只将他的名字设置为“kate” - 我们需要某种责任) 。有没有办法做到这一点?
答案 0 :(得分:5)
简单地说,不,没有办法。原因是作者和提交者的详细信息是在提交时设置的,这通常发生在本地。稍后会发生git push
将现有提交推送到远程存储库。由于提交已经由SHA1哈希进行并引用,因此在推送操作期间不能更改它们。
您可能会考虑做的是使用预接收或更新挂钩来阻止人们推送他们没有创作的提交,但这可能会阻止大量合法用途。您可能会发现信任您的用户是唯一明智的选择。
答案 1 :(得分:4)
这不适用于git的分散性。想象一下 joe 合并 kate的开发分支。现在,在他的本地克隆中有来自 joe 和 kate 的提交:
* joe: Merge branch 'kate'
|\
| * joe: update foo
* | kate: fix test
* | kate: add test
|/
* joe: initial commit
如果 joe 现在推送到中央存储库,并且您正在强制执行用户名,则 kate的提交将归因于 joe 。
答案 2 :(得分:1)
在Git-hub上,每个用户都有自己的服务器端git存储库。也许你只允许用户推送到那里,你会有一个管理员进入“官方”存储库? 这样,就具有完全可追溯性和可靠性。您还将拥有一位最终负责的主持人。