是否有任何方法可以修改中央存储库的配置以禁止任何远程推送到主分支(使用git)?它只能由发布所有者通过分支合并进行更新。
在子存储库中也可以这样做,但不幸的是,它并不总是足够的傻瓜证明,很容易忘记在新机器上做这件事——无法防止意外的推送。开发人员应该能够从任何分支中提取数据并将数据推回到任何分支,除了我们希望看到的只读的master
之外。是否可以使用git
?或者我们尝试了一个错误的工作流程。
更新tl;dr:感谢Charles Bailey,答案是签出master并添加以下配置:
receive.denyCurrentBranch = true
最佳答案
您应该看看git发行版的update
目录中名为update-paranoid
的示例contrib
hook。它允许您设置每个分支的ACL,限制允许谁将分支推送到哪个分支。这样,您可以将更新主控形状限制为仅发布所有者。
我不太清楚你所说的“只通过分支合并更新”是什么意思。我假设您的中央存储库是空的,在这种情况下,分支通常只通过推送进行更新。在Git中,推合并提交和不推合并提交没有概念上的区别,所以我不确定您限制master更新类型的标准是什么。
如果您正在推送到一个非裸机中央存储库,master
始终是签出的分支,那么您可以简单地将config变量receive.denyCurrentBranch
设置为true
或refuse
。