Gitlab/Gitolite可以强制使用正确的用户名/电子邮件

fia*_*iat 13 git gitolite gitlab

尝试使用git,我为自托管存储库设置了Gitlab,它看起来很棒.

困扰我的一件事是,似乎任何人都可以像其他人一样提交提交(即:欺骗提交).

即:我在Gitlab中使用公钥访问设置了我的用户

  • 用户1
  • 用户2

现在只有那些用户可以推送 - 使用他们的私有SSH密钥 - 但似乎没有什么能阻止User2调整他们的gitconfig以User1的名义提交并推动它?

gitlab和git -show中的历史记录将提交者显示为User1的gitconfig文本.我希望Gitlab将与推送ssh密钥相关联的用户名标记到历史记录中,以便我知道用于推送的ssh密钥.

场景是repo将在团队环境中使用,而且不允许欺骗性提交似乎是谨慎的.

我已经完成了一些阅读并理解,通常可能会改变工作流程以拥有一个受祝福的存储库,并且只有可信任的提交者才能推动 - 但在此阶段学习git时我希望保持更集中/ SVN类型的工作流程.

这可能是使用钩子吗?

有一个类似的问题回答gitosis,但即使这似乎只强制提交者来自一系列用户不会像User2那样停止User1欺骗 - 据我所知.

PS:也许我问的是错误的问题 - 在gitlab中有没有办法发现哪个ssh密钥(以及真正的用户)用于将代码推送到repo中?从我能找到的东西看来并不是这样.

Von*_*onC 5

2015年更新

正如这个帖子提到的那样,GitLab Enterprise在与项目关联的git钩子中有一种控制电子邮件的方法:

转到项目设置 - > git hooks并检查作者电子邮件的验证.

任何与已知用户不匹配的电子邮件都将被拒绝.


原始答案(2012)

实现用户id控制的部分方法是使得gitolite(gitlab依赖于)拒绝推送,如果推送提交中的至少一个没有提交推送提交.

当您按下时,您将通过身份验证(基于Gitolite注册的公钥名称,或者通过LDAP连接等其他方式).
您可以添加一个pre-receive钩子来检查所有新提交,并查找至少一个由正确名称提交的提示(即用户推送提交的ID).
以此pre-receive钩子为例.