changeset 27032:28ee7af4b685

filemerge: return whether the file is deleted for nomerge internal tools We're going to support the filemerge code resolving change/delete conflicts in upcoming patches. Some of these resolutions require that the dirstate be modified. Modifying the dirstate directly from in here would be (a) a pretty bad layering violation and (b) wrong because all dirstate removals should happen before adds. So in this and upcoming patches we're instead going to pass whether the file is deleted up to merge.mergestate, then in there figure out what dirstate action needs to be taken.
author Siddharth Agarwal <sid0@fb.com>
date Wed, 18 Nov 2015 13:52:28 -0800
parents 8be0af32e513
children 089dab8794dc
files mercurial/filemerge.py
diffstat 1 files changed, 6 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/filemerge.py	Wed Nov 18 15:46:45 2015 -0800
+++ b/mercurial/filemerge.py	Wed Nov 18 13:52:28 2015 -0800
@@ -232,18 +232,18 @@
             return _ilocal(repo, mynode, orig, fcd, fco, fca, toolconf)
     except error.ResponseExpected:
         ui.write("\n")
-        return 1
+        return 1, False
 
 @internaltool('local', nomerge)
 def _ilocal(repo, mynode, orig, fcd, fco, fca, toolconf):
     """Uses the local version of files as the merged version."""
-    return 0
+    return 0, False
 
 @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
+    return 0, False
 
 @internaltool('fail', nomerge)
 def _ifail(repo, mynode, orig, fcd, fco, fca, toolconf):
@@ -251,7 +251,7 @@
     Rather than attempting to merge files that were modified on both
     branches, it marks them as unresolved. The resolve command must be
     used to resolve these conflicts."""
-    return 1
+    return 1, False
 
 def _premerge(repo, toolconf, files, labels=None):
     tool, toolpath, binary, symlink = toolconf
@@ -536,7 +536,8 @@
     toolconf = tool, toolpath, binary, symlink
 
     if mergetype == nomerge:
-        return True, func(repo, mynode, orig, fcd, fco, fca, toolconf)
+        r, deleted = func(repo, mynode, orig, fcd, fco, fca, toolconf)
+        return True, r
 
     if premerge:
         if orig != fco.path():