mercurial - 如何保持 mercurial graph "flat"

标签 mercurial tortoisehg

我有一个“主”存储库,我克隆它并在克隆中进行一些更改。与此同时,“main”中还有其他更改,所以我将它们拉出并 merge 到我的克隆中。我在克隆中进行了更多更改,并 merge 了“main”中的任何其他新更改。这给了我这张图:

enter image description here

当我在克隆中完成工作后,我推送到主存储库,现在“主”中的图形如下所示:

enter image description here

我知道它们在拓扑结构上相同,但对我来说第一个更清楚(这是一个非常简单的情况,但事情可能会变得更复杂)。

有什么办法可以避免这种情况吗?我找到了 this question关于事后重新排序图表,但我在想我的工作流程中可能存在问题,或者我可以通过更改来防止出现问题。

最佳答案

问题是图表是按修订号排序的,而不是按修订日期排序的。这实际上是按修订出现在当前存储库中的日期/时间排序。 thg 项目中有一个 Unresolved 问题,允许按修订日期对列表进行排序,但其中一位开发人员表示,此更改需要涉及隐藏图表,因为他认为重写绘图器对于 yield 太少(问题是 here )。

据我所知,没有涉及 merge 的工作流程可以修复它,因为如果在多个存储库上执行工作,则不同存储库上的修订将永远不会以相同的顺序进行。

整理树的一种方法是在提取更改后使用 rebase 而不是 merge。这将导致没有 merge 的单个分支,因为它重写历史以使其看起来好像您的 draft 修订是在您刚刚提取的更改之后实现的。如果您想阅读 rebase,该信息是 here .

关于mercurial - 如何保持 mercurial graph "flat",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14828909/

相关文章:

Mercurial:在提交之间移动修改的文件

linux - Mercurial Hg 未发现变化 - 无法推出 Hg

git - 我可以 hg 从 BitBucket 克隆一个 git 存储库吗?

svn - 将 CM Synergy 存档转换为免费的源代码控制

git - 将免费源代码控制转换为 CM Synergy

mercurial - 使用 Mercurial 判断您的工作目录位于哪个分支的简单方法?

mercurial - 有没有一种简单的方法来清除工件的 mercurial 存储库?

mercurial - 将最近的提交放在 Mercurial (Hg) 的单独(命名)分支中

version-control - hg 到 git sync 的一种方法