Mercurial > public > mercurial-scm > hg
comparison mercurial/manifest.py @ 24405:cbe9d50d9e65
treemanifest: make filesnotin() faster
Same rationale as the previous change.
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Tue, 03 Mar 2015 13:50:06 -0800 |
parents | 96cccf1e3257 |
children | 1297480ed347 |
comparison
equal
deleted
inserted
replaced
24404:96cccf1e3257 | 24405:cbe9d50d9e65 |
---|---|
480 ret.setflag(fn, flags) | 480 ret.setflag(fn, flags) |
481 return ret | 481 return ret |
482 | 482 |
483 def filesnotin(self, m2): | 483 def filesnotin(self, m2): |
484 '''Set of files in this manifest that are not in the other''' | 484 '''Set of files in this manifest that are not in the other''' |
485 files = set(self.iterkeys()) | 485 files = set() |
486 files.difference_update(m2.iterkeys()) | 486 def _filesnotin(t1, t2): |
487 for d, m1 in t1._dirs.iteritems(): | |
488 if d in t2._dirs: | |
489 m2 = t2._dirs[d] | |
490 _filesnotin(m1, m2) | |
491 else: | |
492 files.update(m1.iterkeys()) | |
493 | |
494 for fn in t1._files.iterkeys(): | |
495 if fn not in t2._files: | |
496 files.add(t1._subpath(fn)) | |
497 | |
498 _filesnotin(self, m2) | |
487 return files | 499 return files |
488 | 500 |
489 @propertycache | 501 @propertycache |
490 def _alldirs(self): | 502 def _alldirs(self): |
491 return scmutil.dirs(self) | 503 return scmutil.dirs(self) |