[PATCH 5 of 6 V3] treemanifest: make filesnotin() faster
Martin von Zweigbergk
martinvonz at google.com
Thu Mar 19 14:52:57 CDT 2015
# HG changeset patch
# User Martin von Zweigbergk <martinvonz at google.com>
# Date 1425419406 28800
# Tue Mar 03 13:50:06 2015 -0800
# Node ID ac74c8fcc0bb7eed6abee79500fcb88047593ae4
# Parent ed155a749dcab7be5b6118727547021761e4f7f8
treemanifest: make filesnotin() faster
Same rationale as the previous change.
diff -r ed155a749dca -r ac74c8fcc0bb mercurial/manifest.py
--- a/mercurial/manifest.py Thu Feb 19 17:13:35 2015 -0800
+++ b/mercurial/manifest.py Tue Mar 03 13:50:06 2015 -0800
@@ -482,8 +482,20 @@
def filesnotin(self, m2):
'''Set of files in this manifest that are not in the other'''
- files = set(self.iterkeys())
- files.difference_update(m2.iterkeys())
+ files = set()
+ def _filesnotin(t1, t2):
+ for d, m1 in t1._dirs.iteritems():
+ if d in t2._dirs:
+ m2 = t2._dirs[d]
+ _filesnotin(m1, m2)
+ else:
+ files.update(m1.iterkeys())
+
+ for fn in t1._files.iterkeys():
+ if fn not in t2._files:
+ files.add(t1._subpath(fn))
+
+ _filesnotin(self, m2)
return files
@propertycache
More information about the Mercurial-devel
mailing list