如何将发布分支合并回主分支

How to merge a release branch back to master

我们有两个主要分支机构:

我们的自动化持续集成是这样工作的:

  1. CI取release分支的最新版本
  2. 构建系统
  3. 整合master分支的最新代码(无推送)
  4. 运行所有测试
  5. 如果所有测试都正常:更新版本号并更新发布分支。

这有一个问题:

master 中的版本号没有增加。

如果我们这样做,就会出现无限循环,因为 CI 认为:

啊,master上的新变化(没看出来只是版本号更新)。让我们测试一下代码....

如何将 CI 的更改返回给 master?

我们希望避免所有 CI 提交都进入母版的合并。在经常更新的回购协议中,每天会有 CI 提交。结果将是 git 历史记录中有太多 CI 提交。对于 "too many" 我的意思是 "too many" 对于人眼。

更新

我们"continuous integration"。软件每天测试两次。如果稳定,版本号会增加。我们的上下文中没有 "release day"。

我们有 development/feature 家分店。但我认为这不是问题的一部分。合并到母版中是由开发人员完成的。这不是自动的。

嗯...转换策略怎么样?

在 development/feature 个分支中工作,合并到 master,ci 发布 master(或标签,如果你喜欢)。

因为 git master 是项目的官方cial 历史,分支的存在只是为了贡献给 master。

我目前知道两个(linux 三个)不同的主流程序与 git 一起工作。 一种是 github model, the other one is Gitflow 模型。 Gitflow 有点复杂,而且通常也不是必需的。

既然已经有两个可用的解决方案,为什么还要发明自定义策略?

听起来您想不断集成来自开发人员的更改,在这种情况下,您应该使用 相同的 分支 (master),CI系统应该简单地在 master 分支上放置一个标签并使用该标签(或选择通过其他方法放置的最新 CI 标签)来完成它的工作 - 它所做的只是验证该标签上的集成分支,它应该' 通常对代码库本身进行任何提交。

仅使用另一个分支来实现 CI 恕我直言,这是一种复杂的方式,只会给您带来复杂性和麻烦(例如这个问题)。

如果你确实想使用 release 分支作为 release 你应该 never 盲目地把变化从master。而且你应该 永远不要 将它合并回 master 因为 master 现在演变为 下一个版本 。 - 两个分支的上下文不同,仅仅因为一个分支中的更改有效并不意味着它会在另一个分支中起作用。

release 分支的提交率在接近发布日期时应该逐渐变小(比 master 中的提交率小得多)。如果需要修复在 master 和 release 中出现的问题,则应精心挑选它们并双重提交给 2 个分支,并针对每个分支进行适当的验证。