gpt4 book ai didi

git - Gitlab/Gitolite 可以强制执行正确的用户名/电子邮件吗

转载 作者:IT王子 更新时间:2023-10-29 00:43:57 25 4
gpt4 key购买 nike

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

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

即:我在 Gitlab 中设置了我的用户,具有公钥访问权限

  • 用户 1
  • 用户 2

现在只有那些用户可以推送 - 使用他们的私有(private) SSH key - 但似乎没有什么可以阻止 User2 调整他们的 gitconfig 以 User1 的名义提交并推送到此为止?

gitlab 和 git -show 中的历史记录将提交者显示为 User1 的 gitconfig 文本。我希望 Gitlab 将与推送 ssh key 关联的用户名标记到历史记录中,这样我就知道谁的 ssh key 被用来推送了。

场景是在团队环境中使用 repo 协议(protocol),不允许欺骗性提交似乎是谨慎的做法。

我读过一些书并了解到,通常人们可能会改变工作流程以拥有一个有福的存储库,并且只有受信任的提交者可以 push 它——但在学习 git 的这个阶段,我想留在一个更集中的/SVN 类型的工作流程。

这可以使用钩子(Hook)吗?

有一个similar question回答了 gitosis 但即使这似乎只强制提交者来自一系列用户,这些用户并没有阻止 User1 欺骗用户 2 - 据我所知。

PS:也许我问错了问题 - gitlab 中是否有办法发现使用哪个 ssh key (以及真实用户)将代码推送到存储库中?据我所知,情况并非如此。

最佳答案

2015 年更新

正如该线程所提到的,GitLab Enterprise 在其与项目关联的 git Hook 中有一种控制电子邮件的方法:

Go to project settings -> git hooks and check validation of author email.

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


原始答案(2012 年)

实现用户 ID 控制的部分方法是让 gitolite(gitlab 所依赖的)如果至少有一个推送的提交未由推送它的人提交,则拒绝推送。

当您推送时,您将通过身份验证(基于 Gitolite 注册的公钥名称,或通过其他方式(如 LDAP 连接))。
您可以添加一个 pre-receive Hook ,它将检查所有新提交,并查找至少一个正确名称的提交(即推送所述提交的用户的 ID)。
看这个pre-receive hook举个例子。

关于git - Gitlab/Gitolite 可以强制执行正确的用户名/电子邮件吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12066276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com