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.
--- a/mercurial/filemerge.py Wed Nov 18 15:40:28 2015 -0800
+++ b/mercurial/filemerge.py Wed Nov 18 15:41:50 2015 -0800
@@ -242,8 +242,14 @@
@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):