[PATCH 1 of 4] copies: move code into new manifestdict.filesnotin() method
Martin von Zweigbergk
martinvonz at google.com
Fri Feb 27 22:46:49 UTC 2015
# HG changeset patch
# User Martin von Zweigbergk <martinvonz at google.com>
# Date 1425074257 28800
# Fri Feb 27 13:57:37 2015 -0800
# Node ID 53f0a056475d56b7b33f8f8b8b7ebadec047ca40
# Parent 545378f73f321290454af60f71e0f1ed3215de99
copies: move code into new manifestdict.filesnotin() method
copies._computeforwardmissing() finds files in one context that is not
in the other. Let's move this code into a new method on manifestdict,
so m1.filesnotin(m2) can be optimized for various types of manifests
(we expect more types of manifests soon).
diff -r 545378f73f32 -r 53f0a056475d mercurial/copies.py
--- a/mercurial/copies.py Tue Feb 24 10:36:11 2015 -0800
+++ b/mercurial/copies.py Fri Feb 27 13:57:37 2015 -0800
@@ -149,9 +149,7 @@
This is its own function so extensions can easily wrap this call to see what
files _forwardcopies is about to process.
"""
- missing = set(b.manifest().iterkeys())
- missing.difference_update(a.manifest().iterkeys())
- return missing
+ return b.manifest().filesnotin(a.manifest())
def _forwardcopies(a, b):
'''find {dst at b: src at a} copy mapping where a is an ancestor of b'''
diff -r 545378f73f32 -r 53f0a056475d mercurial/manifest.py
--- a/mercurial/manifest.py Tue Feb 24 10:36:11 2015 -0800
+++ b/mercurial/manifest.py Fri Feb 27 13:57:37 2015 -0800
@@ -38,6 +38,12 @@
ret._flags[fn] = flags
return ret
+ 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())
+ return files
+
def matches(self, match):
'''generate a new manifest filtered by the match argument'''
if match.always():
More information about the Mercurial-devel
mailing list