git branching model有一个工作流程,我们有两个分支,其中包含无限生命:develop
和master
其中master
反映生产就绪状态和develop
状态,其中包含最新的开发更改。
要从develop
转移到master
,我们会通过一个中间状态release branch
来支持准备新的生产版本。在完成这些准备工作(shell脚本或手动更改)之后,我们将发布分支合并到master中,对其进行标记并将其推送到生产环境。
此时仅限生产进行了更改,因为例如,外部服务在生产中的URL与在暂存环境中的URL不同。
现在master
超前于develop
,除非我将其合并回develop
,否则将始终develop
。
如果我(a)这样做我在发布分支中所做的所有仅限生产更改将合并回到开发
如果我(b)不这样做,我的主人将永远领先于develop
,如果是修补程序,那么分支主我将会结束修复后无论如何都要将全部合并到{{1}}。
使用此模型的最佳方法是什么,同时确保我的仅限生产更改远离我的开发分支?
答案 0 :(得分:1)
这实际上是一个配置管理问题,而不是一个git问题。这个问题并不是git独有的,而且是所有版本控制系统的问题。最佳做法是消除所有仅生产变更或至少将其减少到最低限度。
这可以通过多种方式完成:
将配置放在文件中,并根据生产中更改的单个变量使用if语句。例如:
if(production)
value = key
其他
value = otherkey
这不是很好,因为现在你基本上有未经测试的代码。
将配置放在环境变量中。这非常有效,但您最好确保您的部署过程实例化并填充它们。
但如果您想获得最先进的技术,请将您的配置放入其自己的存储库并使用木偶和厨师等自动化工具