Version control Mercurial工作流-何时可以重新设置基础,何时应该合并?

Version control Mercurial工作流-何时可以重新设置基础,何时应该合并?,version-control,mercurial,workflow,Version Control,Mercurial,Workflow,我们已经在工作中使用Mercurial几个月了。我们已经修改了我们的工作流程几次,结果是: 初始快照处于暂存状态,然后我们将其克隆到我们的中央存储库中,每个人都在本地克隆了它 当我们处理功能/错误修复时,我们总是从暂存更新到最新的默认值,以便从最新的生产拷贝开始 然后,我们将特性分支推送到一个中央存储库进行备份,使其可供团队使用,等等 我们继续我们的QA系统,拉取特性分支并将其合并到那里 如果QA在特性上签字,我们将其合并到同一台机器上的稳定分支中 然后,我们将稳定的分支拉到staging上

我们已经在工作中使用Mercurial几个月了。我们已经修改了我们的工作流程几次,结果是:

初始快照处于暂存状态,然后我们将其克隆到我们的中央存储库中,每个人都在本地克隆了它

  • 当我们处理功能/错误修复时,我们总是从暂存更新到最新的默认值,以便从最新的生产拷贝开始
  • 然后,我们将特性分支推送到一个中央存储库进行备份,使其可供团队使用,等等
  • 我们继续我们的QA系统,拉取特性分支并将其合并到那里
  • 如果QA在特性上签字,我们将其合并到同一台机器上的稳定分支中
  • 然后,我们将稳定的分支拉到staging上,将其合并到那里并进行摘要测试
  • 如果一切顺利的话,我们会把所有东西都机器人复制到实时系统中
这对我们来说已经有一段时间了,但仍然有一个艰难的地方让我们前进:“嗯,也许有更好的方法,感觉不太自然”

我们面临的最大问题是,当本地机器上的功能分支变老时

例如:

  • 我的系统上有一个新功能
  • 重新组织优先级,在EpicNewFeature站点上工作:(
  • 6个月后,我终于恢复了EpicNewFeature的工作
在这一点上,该分支远远落后于当前默认分支。如果我完成它并尝试在QA上合并它,我将遇到很多冲突(对于这些冲突,您几乎总是保留QA上的内容)

为了缓解这个问题,我们有时会将默认值合并回EpicNewFeature,以使其“达到最新速度”。这简化了我们在QA上的合并,但它通常仍然是本地合并的一部分

我读过关于重新基础的文章,它假设有助于使下一个合并快速向前,因为你(从我所理解的)将历史注入中间,改变你自己的历史。 我读到的关于rebase的大多数地方都警告您,如果您已经推送了您的分支,就不要这样做,如果有人可能已经推送了您的更改,就绝对不要这样做。您如何确保这一点呢?我们经常推送到中央存储库进行备份,我们通常只推送所有内容


您是否看到了一些可以帮助我们改进当前工作流程的东西?重定基址会更经常地帮助我们吗?

我想您误解了它的作用。它的工作原理是简单地合并到存储库的提示,然后删除原始链接。这与采取“差异”并将其应用到提示几乎是一样的

您仍然会遇到您试图避免的所有相同的合并冲突


通常,处理这些冲突的最简单方法是零碎的。不要试图一次完成所有提示。

对于“结束”的一票,你建议我如何改进?我不是说这篇文章是“最佳实践”当然。我只是有一种方法来做一些我认为远远不是最优的事情,就像一个糟糕的查询,可以在很多方面得到修复。哦,我觉得在阅读了它之后,由于某种原因,重新基础会更简单,实际上是做了一系列快速的合并。我想,在我们的情况下,重新基础仍然会更好,因为这是我遇到的最大问题如果这是一个大的合并,那么就有很大的可能破坏QA环境。我读到了这篇文章——合并似乎是我们案例中的“最佳”方法。重新调整基础可能会带来比解决问题更多的问题。