23 return set(self._flags.keys()) |
23 return set(self._flags.keys()) |
24 def set(self, f, flags): |
24 def set(self, f, flags): |
25 self._flags[f] = flags |
25 self._flags[f] = flags |
26 def copy(self): |
26 def copy(self): |
27 return manifestdict(self, dict.copy(self._flags)) |
27 return manifestdict(self, dict.copy(self._flags)) |
|
28 def intersectfiles(self, files): |
|
29 '''make a new manifestdict with the intersection of self with files |
|
30 |
|
31 The algorithm assumes that files is much smaller than self.''' |
|
32 ret = manifestdict() |
|
33 for fn in files: |
|
34 if fn in self: |
|
35 ret[fn] = self[fn] |
|
36 flags = self._flags.get(fn, None) |
|
37 if flags: |
|
38 ret._flags[fn] = flags |
|
39 return ret |
28 def flagsdiff(self, d2): |
40 def flagsdiff(self, d2): |
29 return dicthelpers.diff(self._flags, d2._flags, "") |
41 return dicthelpers.diff(self._flags, d2._flags, "") |
30 |
42 |
31 class manifest(revlog.revlog): |
43 class manifest(revlog.revlog): |
32 def __init__(self, opener): |
44 def __init__(self, opener): |