避免将一个分支合并到另一个分支的最佳方法

4
我们工作中有三个分支:
  • 主分支(master)
  • 发布分支(release)
  • 开发分支(develop)
我们以develop为基础创建其他分支,开发完成后,将该分支与release合并,以便进行应用程序测试。同时,我们还在develop分支中继续开发和合并。
当一个release经过测试后,我们再将其合并到master分支。我们绝不能直接将develop分支合并到master分支,并且希望自动避免人为因素导致的事故。
是否有一种git方法可以使分支不兼容,从而拒绝尝试将一个分支合并到另一个分支?是否有插件或其他工具可以实现这一点?

我的第一个想法是“git钩子”,但显然没有“pre-merge”钩子。第二个想法:也许你不应该反对传统? master是一个“特殊”的分支名称。它是拉取请求等的默认目标分支。可以说,分支旨在合并到主分支。 - Sergio Tulentsev
关于实际问题,即使您无法成功“防止”这种合并,我相信在事后“检测”它们是可能的(然后手动撤消或其他操作)。 - Sergio Tulentsev
“测试通过后,我们将合并到主分支(master)” --> 在我所见的情况中通常相反...在主分支中进行测试,然后发布。 - Maria Ines Parnisari
可能有用:https://dev59.com/ZWEi5IYBdhLWcg3wIJFH - Sergio Tulentsev
1个回答

4
你最好的方法是在接收端(即你的中央“推送”存储库)安装一个pre-receive钩子来真正强制执行此操作。
根据https://git-scm.com/book/gr/v2/Customizing-Git-Git-Hooks的说法:
第一个要运行的脚本是处理客户端推送时的pre-receive。它从标准输入中获取正在推送的引用列表;如果它退出非零,则不接受任何引用。您可以使用此钩子来执行以下操作:确保更新的所有引用都是快进引用,或者对修改推送的所有引用和文件进行访问控制等。
检查文档和.git/hooks/*.sample中的示例钩子,你应该能够组合出一些东西(即,遍历作为命令行参数得到的引用,检查每个引用是否包含你的无效合并之一,如果是,则exit 1)。如果你无法使其工作,请告诉我们。
要找出是否要接受合并请求,你可以使用git log

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接