仅允许一个分支推到遥控器



我们有一个git遥控器(用于生产(,使用openshift。

在本地,我想确保只能将主分支推到此遥控器上。我应该采取任何特殊步骤来确保发生这种情况,还是应该依靠git默认值?

我99%肯定的是,生产GIT遥控器仅着眼于主分支。因此,我的理解是,我们在本地推动其他分支的唯一方法就是:

git push prod_remote a_feature_branch:master

所以我的问题是 - 有没有办法阻止我团队中的某人这样做(没有武力旗(?

接收方面,接收提交的git具有分支名称的 no notion (如果有的话(在发送git上。它所知道的是,它已收到一些对象,然后请求更新一些引用。如果这些引用是拼写的refs/heads/whatever,则它们是分支名称,删除或更新的分支操作,该分支 whatever

因此,在接收方面,答案是否:没有办法阻止任何人这样做。如果他们完全可以将提交交付给接收git,他们可以交付任何提交和所喜欢的参考名称更新。您可以使用留下的任何身份验证数据(例如,从SSH或Gitolite(例如Gitolite((来检查提交和/或参考名称更新,但是您对其 Origin 一无所知,您有仅哈希ID和名称。

发送方面,您可以使用pre-push挂钩做更多的事情。前挂钩的运行:

  • $1:遥控器的名称,如果推送使用命名遥控器;
  • $2:对应于$1的URL

(如果不使用命名遥控器,两个命令行参数是相同的(,并且在标准输入中,一条线,每行push refspec一行,每行都有四个项目:

  • 本地参考(例如refs/heads/branch(
  • 本地哈希ID
  • 远程参考
  • 远程哈希ID

(有关详细信息,请参见Githooks文档(。但是,由于每个人都可以完全控制其存储库,因此发送侧挂钩取决于每个发件人,因此,是否调用任何挂钩。

如果每个人都会自愿选择的人,您可以为它们提供一个钩子:

  • 检查远程名称($1(和/或URL($2(;
  • 如果与您要保护的存储库相匹配,请检查输入流上的任何远程参考匹配refs/heads/master;
  • 如果所有这些检查都适用,请以任何方式检查相应的本地参考和/或哈希。

最新更新