2014-09-03 568 views
1

在一个共同的(基于GIT-)开发工作流程,一个维护一个master分支和next(或dev)分支,它被用于测试目的:如何避免git分支被合并到另一个分支?

  • 功能分支从master开始和被合并到next为测试。如果认为稳定,功能分支可以合并到master
  • master定期合并到next
  • next定期倒带(比如,发行后)。
  • next分支应该永远不会被合并到master分支

能够自动防止next合并为master,直接或通过基于next另一个分支这将是有益的。 如何使用git完成此操作?

注意:如this question中所述,可以使用git挂钩来防止在可以完全访问的远程存储库上执行这些类型的合并。然而,对于像BitBucket或GitHub这样的服务来说,这似乎是不可能的,因此我寻求一种可以与本地存储库一起使用的解决方案,或者可以与只具有有限管理访问权的远程存储库一起使用的解决方案。

+0

你为什么不在本地安装钩子? – 2014-09-03 15:07:41

+0

链接中的钩子是一个更新钩子,它只对远程仓库有意义。也许这很简单,但是如何将其转化为本地钩子? – 2014-09-03 19:30:04

+1

这似乎是一个奇妙的问题,我也需要一个答案。这是非常非常令人不安的,它没有更多的关注和基于钩子的答案,因为安全使用这个工作流程似乎是至关重要的。我想要这样做,这使我的团队花费了一堆时间和烦恼,完全按照OP描述的方式(通过“通过另一个分支”变体)。 – Benjohn 2015-11-19 15:42:41

回答

1

当你真的想使用Github/Bitbucket,那么不要给任何人写你的repo的访问权限。只接受拉取请求。这样,你可以检查合并它的请求,如果你看到你不想要的东西,就拒绝它们。

一种自动执行此操作的方法是创建一个本地回购,添加一个执行检查的钩子,然后将拉取请求拉入新的本地“验证”回购(这不应该是您的正常工作回购,所以您总是可以扔掉它)。