![](/img/trans.png)
[英]Git branching / workflow model like “nvie gitflow” but without release branches
[英]Git branching model workflow - develop/master branches
git分支模型具有一个工作流,其中有两个生命周期无限的分支: develop
和master
, master
反映了生产就绪状态,并使用最新交付的开发更改来 develop
状态 。
为了从develop
到master
我们经历了一个中间状态,即一个release branch
,该release branch
支持新产品发布的准备 。 在完成这些准备工作(shell脚本或可能的手动更改)之后,我们将release分支合并到master中,对其进行标记并推入生产环境。
在这一点上, 仅进行更改,因为例如外部服务在生产中与过渡环境中具有不同的URL。
现在master
领先于develop
,除非我将它合并回develop
否则它将永远领先。
如果我(a) 这样做,那么我所有生产中仅在release分支中所做的更改将被合并回develop
如果我(b) 不这样做,那么我的母带将始终处于develop
领先和落后地位,并且在分支出母版的修补程序的情况下,无论如何,我将最终在修复后将所有合并回develop
。
在确保我的开发分支只保留生产变更的同时,使用此模型的最佳方法是什么?
实际上,这实际上是一个配置管理问题,而不是git问题。 这个问题不是git独有的,并且是所有版本控制系统的问题。 最佳实践是消除所有仅生产变更,或至少将其减少到最低限度。
这可以通过多种方式完成:
将配置放入文件中,并使用基于单个变量的if语句,该变量在生产中会发生变化。 例如:
如果(生产)值=键
else值= otherkey
这也不是一件好事,因为现在您已经拥有未经测试的代码。
将config放入环境变量中。 这工作得很好,但是最好确保您的部署过程实例化并填充它们。
但是,如果您想获得最先进的技术,请将配置放入其自己的存储库中,并使用诸如puppet和Chef之类的自动化工具
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.