[PATCH 2 of 7 mergedriver] filemerge: add support for change/delete conflicts to the ':other' merge tool

Siddharth Agarwal sid0 at fb.com
Thu Nov 19 21:33:54 UTC 2015


# HG changeset patch
# User Siddharth Agarwal <sid0 at fb.com>
# Date 1447890110 28800
#      Wed Nov 18 15:41:50 2015 -0800
# Node ID fcf43805474acb08028332307e63559a3d5a0afb
# Parent  1b30c58e408645fd4a25e0d66d986523208d5302
# Available At http://42.netv6.net/sid0-wip/hg/
#              hg pull http://42.netv6.net/sid0-wip/hg/ -r fcf43805474a
filemerge: add support for change/delete conflicts to the ':other' merge tool

This, along with the previous patch to the :local merge tool, covers the full
matrix of change/delete conflicts.

diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py
--- a/mercurial/filemerge.py
+++ b/mercurial/filemerge.py
@@ -242,8 +242,14 @@ def _ilocal(repo, mynode, orig, fcd, fco
 @internaltool('other', nomerge)
 def _iother(repo, mynode, orig, fcd, fco, fca, toolconf):
     """Uses the other version of files as the merged version."""
-    repo.wwrite(fcd.path(), fco.data(), fco.flags())
-    return 0, False
+    if fco.isabsent():
+        # local changed, remote deleted -- 'deleted' picked
+        repo.wvfs.unlinkpath(fcd.path())
+        deleted = True
+    else:
+        repo.wwrite(fcd.path(), fco.data(), fco.flags())
+        deleted = False
+    return 0, deleted
 
 @internaltool('fail', nomerge)
 def _ifail(repo, mynode, orig, fcd, fco, fca, toolconf):



More information about the Mercurial-devel mailing list