mercurial/manifest.py
changeset 39984 731961d972ba
parent 39983 3cacb74c3a22
child 39987 e22016e83c1e
--- a/mercurial/manifest.py	Tue Oct 02 13:41:00 2018 -0700
+++ b/mercurial/manifest.py	Thu Sep 27 20:16:48 2018 -0700
@@ -1114,9 +1114,19 @@
                 return
             t1._load()
             t2._load()
-            # OPT: do we need to load everything?
-            t1._loadalllazy()
-            t2._loadalllazy()
+            toloadlazy = []
+            for d, v1 in t1._lazydirs.iteritems():
+                v2 = t2._lazydirs.get(d)
+                if not v2 or v2[1] != v1[1]:
+                    toloadlazy.append(d)
+            for d, v1 in t2._lazydirs.iteritems():
+                if d not in t1._lazydirs:
+                    toloadlazy.append(d)
+
+            for d in toloadlazy:
+                t1._loadlazy(d)
+                t2._loadlazy(d)
+
             for d, m1 in t1._dirs.iteritems():
                 m2 = t2._dirs.get(d, emptytree)
                 _diff(m1, m2)