diff mercurial/merge.py @ 22965:b697fa74b475

manifest: for diff(), only iterate over files, not flags From manifest.diff(), we return a dict from filename to pairs of pairs of file nodeids and flags (values of the form ((n1,n2),(fl1,fl2))). To create this dict, we currently generate one dict for files (with (n1,n2) values) and one for flags (with (fl1,fl2) values) and then join these dicts. Missing files are represented by None and missing flags by '', but due to the dict joining, the inner pairs themselves can also be None. The only caller, merge.manifestmerge(), then unpacks these values while checking for None values. By inlining the calls to dicthelpers and simplifying it to only iterate over files (ignoring flags-only differences), we can simplify life for our caller.
author Martin von Zweigbergk <martinvonz@gmail.com>
date Tue, 14 Oct 2014 22:48:44 -0700
parents 2793ecb1522d
children ff93aa006e6a
line wrap: on
line diff
--- a/mercurial/merge.py	Tue Oct 14 17:09:16 2014 -0700
+++ b/mercurial/merge.py	Tue Oct 14 22:48:44 2014 -0700
@@ -424,22 +424,7 @@
     # Compare manifests
     diff = m1.diff(m2)
 
-    for f, (n12, fl12) in diff.iteritems():
-        if n12:
-            n1, n2 = n12
-        else: # file contents didn't change, but flags did
-            n1 = n2 = m1.get(f, None)
-            if n1 is None:
-                # Since n1 == n2, the file isn't present in m2 either. This
-                # means that the file was removed or deleted locally and
-                # removed remotely, but that residual entries remain in flags.
-                # This can happen in manifests generated by workingctx.
-                continue
-        if fl12:
-            fl1, fl2 = fl12
-        else: # flags didn't change, file contents did
-            fl1 = fl2 = m1.flags(f)
-
+    for f, ((n1, n2), (fl1, fl2)) in diff.iteritems():
         if partial and not partial(f):
             continue
         if n1 and n2: