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和最近 - 共同 - 祖先都被使用).
唯一真正的区别是,如果您使用的是命名分支,则分支名称将是左侧父分支的名称.