Gitlab/Gitolite能否强制执行正确的用户名/电子邮件
在使用git进行实验时,我为Gitlab设置了一个自托管存储库,它看起来很棒 有一件事困扰着我,那就是似乎任何人都可以像其他人一样进行提交(即:欺骗提交) ie:我在Gitlab中设置了我的用户,可以使用公钥访问Gitlab/Gitolite能否强制执行正确的用户名/电子邮件,git,gitolite,gitlab,Git,Gitolite,Gitlab,在使用git进行实验时,我为Gitlab设置了一个自托管存储库,它看起来很棒 有一件事困扰着我,那就是似乎任何人都可以像其他人一样进行提交(即:欺骗提交) ie:我在Gitlab中设置了我的用户,可以使用公钥访问 用户1 用户2 现在只有那些用户可以使用他们的私有SSH密钥进行推送,但是似乎没有什么可以阻止User2调整他们的gitconfig以User1的名义提交,并将其推送上去 gitlab和git-show中的历史记录将提交者显示为User1的gitconfig文本。我希望Gitlab
- 用户1
- 用户2
原始答复(2012年) 实现用户id控制的一个部分方法是,如果推送它的人至少没有提交一个推送的提交,则让gitolite(gitlab所依赖的)拒绝推送 推送时,将对您进行身份验证(基于Gitolite注册的公钥的名称,或者通过类似LDAP连接的其他方式)。
您可以添加一个
pre-receive
hook,它将检查所有新提交,并查找至少一个以正确名称提交的提交(即推送所述提交的用户的id)。以此为例。我尝试了这个方法,几乎奏效,但我得到了$GL\u USER的一个奇怪值。钩子运行,但错误为“remote:NoCommit found with firstname_lastname_gmail_com_1345598530 as committer name”。我不知道最后一串数字是从哪里来的-一些gitlab内部的东西?Gitlab似乎不支持任何其他功能,因此可能这对Gitlab不起作用?经过进一步挖掘,firstname_lastname_gmail_com_1345598530的$GL_用户值是Gitlab数据库中存储ssh用户密钥的“keys”表的标识符列。它似乎是自动生成的,不能从用户界面进行设置。@fiat I confirm:
GL\u USER
是用公钥的名称设置的,由Gitlab以这种方式命名,并由gitolite注册。