ang*_*son 5 merge mercurial conflict merge-conflict-resolution
想象一下这种情况:
以下是上述场景的不同视图
("CHANGE"之后的数字表示该人改变了文件的"部分X".如果两个用户都改变了相同的部分,我们前面会发生合并冲突,如果他们改变了不同,那么就没那么多了)
Alice Bob
CLONE MASTER CLONE MASTER
-----------------------------------------
CHANGE 1 <-----+
COMMIT +-- upcoming merge conflict
----------------------------------------- |
CHANGE 1 <-----+
COMMIT
PUSH
-----------------------------------------
PULL <-- Bob's change +1 head
MERGE <-- Attempt to get rid of extra head
RESOLVE CONFLICT <-- Resolve merge conflict
COMMIT
-----------------------------------------
CHANGE 2 <-----+
COMMIT +-- yet another merge
PUSH | conflict ahead
----------------------------------------- |
CHANGE 2 <-----+
COMMIT
PULL <-- Bob's change, again +1 head
MERGE <-- Attempt to get rid of extra head
RESOLVE ???
在这一点上,我的问题是:
如果我只是简单地采用了Bob的文件版本和Alice的文件版本,并将其提供给任何合并程序,那么它会将这两个更改标记为冲突.
换句话说,冲突工具是否会试图让Alice解决原始冲突和新冲突,或者只解决最新冲突?
我猜测(我还没试过这个,仍然试图构建某种测试脚本来测试这个问题),Mercurial只会要求Alice解决最新的冲突.
如果我将Mercurial配置为使用第三方差异/合并程序怎么办?这仍然适用吗?例如,我已经将我的安装配置为使用Beyond Compare,这两个文件(Bob只有他的更改和Alice的更改+合并解决方案)是否存在初始分辨率?换句话说,如果使用Beyond Compare,那么这里也会发生正确的事情(假设它完全没有.)
Mercurial只需要解决最新的冲突,并且可以使用外部更改工具.
当Alice进行第二次合并时,她将自己之前的合并与bob的新delta合并,只有这种变化需要重新整合.
真的很清楚图表,BTW.谢谢
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |