合并方向在Mercurial中是否重要?

Lór*_*tér 16 merge mercurial dvcs

举一个简单的例子:我正在使用默认分支,在本地提交一些更改集,然后从主存储库中提取了一些更改集.我已经在我孤立的本地存储库中工作了几天,因此在将结果推回到master之前,要进行相当多的更改.

default ---o-o-o-o-o-o-o-o-o-o-o  (pulled stuff)
            \
             o----o------------o  (my stuff)
Run Code Online (Sandbox Code Playgroud)

我现在可以做两件事.

选项1:

hg pull
hg merge
Run Code Online (Sandbox Code Playgroud)

结果#1:

default ---o-o-o-o-o-o-o-o-o-o-o
            \                   \
             o----o------------o-O
Run Code Online (Sandbox Code Playgroud)

选项#2:

hg pull
hg update
hg merge
Run Code Online (Sandbox Code Playgroud)

结果#2:

default ---o-o-o-o-o-o-o-o-o-o-o-O
            \                   /
             o----o------------o
Run Code Online (Sandbox Code Playgroud)

这两个结果看起来与我同构,但在实践中似乎选项#2导致更小的变更集(因为它只对主线应用我的少量更改,而不是将所有主线更改应用于我的少数).

我的问题是:这有关系吗?我应该关心合并的方向吗?如果我这样做,我可以节省空间吗?(hg log --patch --rev tip在合并之后做的就是这样.)

Ry4*_*ase 14

它们(有效)相同.你看到hg log --patch --rev X输出大小的差异,因为log显示结果的差异和(任意)它的'left'父级(官方p1),但这不是它的存储方式(Mercurial有一个二进制差异存储格式,不是补丁/差异基于)现在它是如何计算的(p1,p2和最近 - 共同 - 祖先都被使用).

唯一真正的区别是,如果您使用的是命名分支,则分支名称将是左侧父分支的名称.