【发布时间】:2015-11-16 21:29:34
【问题描述】:
我部署了多本 CHEF 食谱。每个都根据语义版本进行版本控制。
我的生产环境正在使用说明书 0.1.1
我的舞台环境正在使用cookbook 0.2.0
2.0 版有很大的变化,我还不能部署到生产环境中。发现一个需要在 0.1.x 中修复的错误。我如何创建说明书 0.1.2 并将其部署到生产环境,而不将说明书 2.0 的重大变化合并到生产环境中?
使用 git-flow。新版本是从开发分支创建的。然后合并回开发和测试。测试后合并到master,给定一个git标签并自动部署到chef服务器。
0.1.1 0.2.0
/ \ / \
o-o--------o-o---X---o--------o-o-------- develop
\ \ \
o------------o------------------o------ master
当食谱被发布时,发布分支被删除。
我假设我需要结帐X,然后创建食谱 0.1.2。但是,当我尝试将说明书 0.1.2 合并到开发分支时,我发现 metadata.rb 和 CHANGELOG.md 存在合并冲突 (Y)。虽然我可以在 0.2.0 食谱发布之前 重新设置基准,但这会改变我的整个历史。
_________________
/ \
0.1.1 0.1.2 0.2.0 \
/ \ / / \ \
o-o--------o-o---X---------o--------o-o------Y-- develop
\ \ \
o------------o------------------------o------- master
部署旧说明书的最佳方式是什么?
我知道关于反向移植 git 提交的类似问题已在 SO 上提出,但没有一个涉及如何处理不可避免的合并冲突。我是否应该接受会有冲突并手动解决它们?
Git strategy to backport bugfixes into older branches (cherry-pick vs. merge)
http://glicksoftware.com/blog/backporting-a-topic-branch-with-git
更新
为了澄清,我已经有了一个策略,在不同的环境中使用不同的食谱,使用一个 environment.json 文件和version pinning。
【问题讨论】:
标签: git merge chef-infra git-flow