[PATCH] manifest: improve filesnotin performance by using lazymanifest diff

Tony Tung ttung at fb.com
Wed Apr 27 07:23:47 UTC 2016


# HG changeset patch
# User Tony Tung <tonytung at merly.org>
# Date 1461740718 25200
#      Wed Apr 27 00:05:18 2016 -0700
# Branch stable
# Node ID 7f80dce78781f5fe691a23f1b7f5a110ed170f32
# Parent  97811ff7964710d32cae951df1da8019b46151a2
manifest: improve filesnotin performance by using lazymanifest diff

lazymanifests can compute diffs significantly faster than taking the set
of two manifests and calculating the delta.

diff --git a/mercurial/manifest.py b/mercurial/manifest.py
--- a/mercurial/manifest.py
+++ b/mercurial/manifest.py
@@ -211,8 +211,10 @@
 
     def filesnotin(self, m2):
         '''Set of files in this manifest that are not in the other'''
-        files = set(self)
-        files.difference_update(m2)
+        diff = self.diff(m2)
+        files = set(filepath
+                    for filepath, hashflags in diff.items()
+                    if hashflags[1][0] is None)
         return files
 
     @propertycache


More information about the Mercurial-devel mailing list