mercurial/merge.py
changeset 26650 6ff5534c8afc
parent 26649 f618b6aa8cdd
child 26651 d58f2f0e2b19
--- a/mercurial/merge.py	Wed Sep 30 21:42:52 2015 -0700
+++ b/mercurial/merge.py	Mon Sep 28 18:34:06 2015 -0700
@@ -61,6 +61,8 @@
     L: the node of the "local" part of the merge (hexified version)
     O: the node of the "other" part of the merge (hexified version)
     F: a file to be merged entry
+    D: a file that the external merge driver will merge internally
+       (experimental)
     m: the external merge driver defined for this merge plus its run state
        (experimental)
 
@@ -125,7 +127,7 @@
                         _("merge driver changed since merge started"),
                         hint=_("revert merge driver change or abort merge"))
                 self._mdstate = mdstate
-            elif rtype == 'F':
+            elif rtype in 'FD':
                 bits = record.split('\0')
                 self._state[bits[0]] = bits[1:]
             elif not rtype.islower():
@@ -254,7 +256,10 @@
                 records.append(('m', '\0'.join([
                     self.mergedriver, self._mdstate])))
             for d, v in self._state.iteritems():
-                records.append(('F', '\0'.join([d] + v)))
+                if v[0] == 'd':
+                    records.append(('D', '\0'.join([d] + v)))
+                else:
+                    records.append(('F', '\0'.join([d] + v)))
             self._writerecords(records)
             self._dirty = False