Mercurial > hg
annotate mercurial/match.py @ 7564:f1af59451c0c
localrepo: fix bad manifest delta generation (issue1433)
The issue came from the 720ae5085ee3 fix for issue586 working only for
manifest.add() fast path, where the incorrect removed file set was
ignored. This path was no longer taken after 716a1296e182 refactoring.
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Sat, 03 Jan 2009 20:16:10 +0100 |
parents | cbdfd08eabc9 |
children | 08e1baf924ca |
rev | line source |
---|---|
6576 | 1 import util |
2 | |
6604
98b6e6f0e49b
match: cleanup match classes a bit
Matt Mackall <mpm@selenic.com>
parents:
6596
diff
changeset
|
3 class _match(object): |
98b6e6f0e49b
match: cleanup match classes a bit
Matt Mackall <mpm@selenic.com>
parents:
6596
diff
changeset
|
4 def __init__(self, root, cwd, files, mf, ap): |
6576 | 5 self._root = root |
6 self._cwd = cwd | |
6604
98b6e6f0e49b
match: cleanup match classes a bit
Matt Mackall <mpm@selenic.com>
parents:
6596
diff
changeset
|
7 self._files = files |
98b6e6f0e49b
match: cleanup match classes a bit
Matt Mackall <mpm@selenic.com>
parents:
6596
diff
changeset
|
8 self._fmap = dict.fromkeys(files) |
6834
cbdfd08eabc9
dirstate.walk: speed up calling match function
Matt Mackall <mpm@selenic.com>
parents:
6604
diff
changeset
|
9 self.matchfn = mf |
6576 | 10 self._anypats = ap |
11 def __call__(self, fn): | |
6834
cbdfd08eabc9
dirstate.walk: speed up calling match function
Matt Mackall <mpm@selenic.com>
parents:
6604
diff
changeset
|
12 return self.matchfn(fn) |
6576 | 13 def __iter__(self): |
14 for f in self._files: | |
15 yield f | |
16 def bad(self, f, msg): | |
17 return True | |
18 def dir(self, f): | |
19 pass | |
20 def missing(self, f): | |
21 pass | |
22 def exact(self, f): | |
23 return f in self._fmap | |
24 def rel(self, f): | |
25 return util.pathto(self._root, self._cwd, f) | |
26 def files(self): | |
27 return self._files | |
28 def anypats(self): | |
29 return self._anypats | |
6596
7fe4610cf920
match: add always, never, and exact methods
Matt Mackall <mpm@selenic.com>
parents:
6578
diff
changeset
|
30 |
6604
98b6e6f0e49b
match: cleanup match classes a bit
Matt Mackall <mpm@selenic.com>
parents:
6596
diff
changeset
|
31 class always(_match): |
98b6e6f0e49b
match: cleanup match classes a bit
Matt Mackall <mpm@selenic.com>
parents:
6596
diff
changeset
|
32 def __init__(self, root, cwd): |
98b6e6f0e49b
match: cleanup match classes a bit
Matt Mackall <mpm@selenic.com>
parents:
6596
diff
changeset
|
33 _match.__init__(self, root, cwd, [], lambda f: True, False) |
98b6e6f0e49b
match: cleanup match classes a bit
Matt Mackall <mpm@selenic.com>
parents:
6596
diff
changeset
|
34 |
98b6e6f0e49b
match: cleanup match classes a bit
Matt Mackall <mpm@selenic.com>
parents:
6596
diff
changeset
|
35 class never(_match): |
98b6e6f0e49b
match: cleanup match classes a bit
Matt Mackall <mpm@selenic.com>
parents:
6596
diff
changeset
|
36 def __init__(self, root, cwd): |
98b6e6f0e49b
match: cleanup match classes a bit
Matt Mackall <mpm@selenic.com>
parents:
6596
diff
changeset
|
37 _match.__init__(self, root, cwd, [], lambda f: False, False) |
6596
7fe4610cf920
match: add always, never, and exact methods
Matt Mackall <mpm@selenic.com>
parents:
6578
diff
changeset
|
38 |
6604
98b6e6f0e49b
match: cleanup match classes a bit
Matt Mackall <mpm@selenic.com>
parents:
6596
diff
changeset
|
39 class exact(_match): |
98b6e6f0e49b
match: cleanup match classes a bit
Matt Mackall <mpm@selenic.com>
parents:
6596
diff
changeset
|
40 def __init__(self, root, cwd, files): |
98b6e6f0e49b
match: cleanup match classes a bit
Matt Mackall <mpm@selenic.com>
parents:
6596
diff
changeset
|
41 _match.__init__(self, root, cwd, files, lambda f: f in files, False) |
6596
7fe4610cf920
match: add always, never, and exact methods
Matt Mackall <mpm@selenic.com>
parents:
6578
diff
changeset
|
42 |
6604
98b6e6f0e49b
match: cleanup match classes a bit
Matt Mackall <mpm@selenic.com>
parents:
6596
diff
changeset
|
43 class match(_match): |
98b6e6f0e49b
match: cleanup match classes a bit
Matt Mackall <mpm@selenic.com>
parents:
6596
diff
changeset
|
44 def __init__(self, root, cwd, patterns, include, exclude, default): |
98b6e6f0e49b
match: cleanup match classes a bit
Matt Mackall <mpm@selenic.com>
parents:
6596
diff
changeset
|
45 f, mf, ap = util.matcher(root, cwd, patterns, include, exclude, |
98b6e6f0e49b
match: cleanup match classes a bit
Matt Mackall <mpm@selenic.com>
parents:
6596
diff
changeset
|
46 None, default) |
98b6e6f0e49b
match: cleanup match classes a bit
Matt Mackall <mpm@selenic.com>
parents:
6596
diff
changeset
|
47 _match.__init__(self, root, cwd, f, mf, ap) |