equal
deleted
inserted
replaced
29 Actions performed on files are gathered into 3 sets: |
29 Actions performed on files are gathered into 3 sets: |
30 |
30 |
31 - added: files actively added in the changeset. |
31 - added: files actively added in the changeset. |
32 - merged: files whose history got merged |
32 - merged: files whose history got merged |
33 - removed: files removed in the revision |
33 - removed: files removed in the revision |
|
34 - salvaged: files that might have been deleted by a merge but were not |
34 - touched: files affected by the merge |
35 - touched: files affected by the merge |
35 |
36 |
36 and copies information is held by 2 mappings |
37 and copies information is held by 2 mappings |
37 |
38 |
38 - copied_from_p1: {"<new-name>": "<source-name-in-p1>"} mapping for copies |
39 - copied_from_p1: {"<new-name>": "<source-name-in-p1>"} mapping for copies |
45 self, |
46 self, |
46 touched=None, |
47 touched=None, |
47 added=None, |
48 added=None, |
48 removed=None, |
49 removed=None, |
49 merged=None, |
50 merged=None, |
|
51 salvaged=None, |
50 p1_copies=None, |
52 p1_copies=None, |
51 p2_copies=None, |
53 p2_copies=None, |
52 ): |
54 ): |
53 self._added = set(() if added is None else added) |
55 self._added = set(() if added is None else added) |
54 self._merged = set(() if merged is None else merged) |
56 self._merged = set(() if merged is None else merged) |
55 self._removed = set(() if removed is None else removed) |
57 self._removed = set(() if removed is None else removed) |
56 self._touched = set(() if touched is None else touched) |
58 self._touched = set(() if touched is None else touched) |
|
59 self._salvaged = set(() if salvaged is None else salvaged) |
57 self._touched.update(self._added) |
60 self._touched.update(self._added) |
58 self._touched.update(self._merged) |
61 self._touched.update(self._merged) |
59 self._touched.update(self._removed) |
62 self._touched.update(self._removed) |
60 self._p1_copies = dict(() if p1_copies is None else p1_copies) |
63 self._p1_copies = dict(() if p1_copies is None else p1_copies) |
61 self._p2_copies = dict(() if p2_copies is None else p2_copies) |
64 self._p2_copies = dict(() if p2_copies is None else p2_copies) |
63 def __eq__(self, other): |
66 def __eq__(self, other): |
64 return ( |
67 return ( |
65 self.added == other.added |
68 self.added == other.added |
66 and self.merged == other.merged |
69 and self.merged == other.merged |
67 and self.removed == other.removed |
70 and self.removed == other.removed |
|
71 and self.salvaged == other.salvaged |
68 and self.touched == other.touched |
72 and self.touched == other.touched |
69 and self.copied_from_p1 == other.copied_from_p1 |
73 and self.copied_from_p1 == other.copied_from_p1 |
70 and self.copied_from_p2 == other.copied_from_p2 |
74 and self.copied_from_p2 == other.copied_from_p2 |
71 ) |
75 ) |
72 |
76 |
156 self.mark_touched(filename) |
160 self.mark_touched(filename) |
157 |
161 |
158 def update_removed(self, filenames): |
162 def update_removed(self, filenames): |
159 for f in filenames: |
163 for f in filenames: |
160 self.mark_removed(f) |
164 self.mark_removed(f) |
|
165 |
|
166 @util.propertycache |
|
167 def salvaged(self): |
|
168 """files that might have been deleted by a merge, but still exists. |
|
169 |
|
170 During a merge, the manifest merging might select some files for |
|
171 removal, or for a removed/changed conflict. If at commit time the file |
|
172 still exists, its removal was "reverted" and the file is "salvaged" |
|
173 """ |
|
174 return frozenset(self._salvaged) |
|
175 |
|
176 def mark_salvaged(self, filename): |
|
177 if "salvaged" in vars(self): |
|
178 del self.salvaged |
|
179 self._salvaged.add(filename) |
|
180 self.mark_touched(filename) |
|
181 |
|
182 def update_salvaged(self, filenames): |
|
183 for f in filenames: |
|
184 self.mark_salvaged(f) |
161 |
185 |
162 @util.propertycache |
186 @util.propertycache |
163 def touched(self): |
187 def touched(self): |
164 """files either actively modified, added or removed""" |
188 """files either actively modified, added or removed""" |
165 return frozenset(self._touched) |
189 return frozenset(self._touched) |