140 if not entry.p2_info: |
140 if not entry.p2_info: |
141 self.copymap.pop(f, None) |
141 self.copymap.pop(f, None) |
142 entry.set_untracked() |
142 entry.set_untracked() |
143 self._refresh_entry(f, entry) |
143 self._refresh_entry(f, entry) |
144 return True |
144 return True |
145 |
|
146 def reset_state( |
|
147 self, |
|
148 filename, |
|
149 wc_tracked=False, |
|
150 p1_tracked=False, |
|
151 p2_info=False, |
|
152 has_meaningful_mtime=True, |
|
153 parentfiledata=None, |
|
154 ): |
|
155 """Set a entry to a given state, diregarding all previous state |
|
156 |
|
157 This is to be used by the part of the dirstate API dedicated to |
|
158 adjusting the dirstate after a update/merge. |
|
159 |
|
160 note: calling this might result to no entry existing at all if the |
|
161 dirstate map does not see any point at having one for this file |
|
162 anymore. |
|
163 """ |
|
164 # copy information are now outdated |
|
165 # (maybe new information should be in directly passed to this function) |
|
166 self.copymap.pop(filename, None) |
|
167 |
|
168 if not (p1_tracked or p2_info or wc_tracked): |
|
169 old_entry = self._map.get(filename) |
|
170 self._drop_entry(filename) |
|
171 self._dirs_decr(filename, old_entry=old_entry) |
|
172 return |
|
173 |
|
174 old_entry = self._map.get(filename) |
|
175 self._dirs_incr(filename, old_entry) |
|
176 entry = DirstateItem( |
|
177 wc_tracked=wc_tracked, |
|
178 p1_tracked=p1_tracked, |
|
179 p2_info=p2_info, |
|
180 has_meaningful_mtime=has_meaningful_mtime, |
|
181 parentfiledata=parentfiledata, |
|
182 ) |
|
183 self._insert_entry(filename, entry) |
|
184 |
145 |
185 ### disk interaction |
146 ### disk interaction |
186 |
147 |
187 def _opendirstatefile(self): |
148 def _opendirstatefile(self): |
188 fp, mode = txnutil.trypending(self._root, self._opener, self._filename) |
149 fp, mode = txnutil.trypending(self._root, self._opener, self._filename) |
511 def _alldirs(self): |
472 def _alldirs(self): |
512 return pathutil.dirs(self._map) |
473 return pathutil.dirs(self._map) |
513 |
474 |
514 ### code related to manipulation of entries and copy-sources |
475 ### code related to manipulation of entries and copy-sources |
515 |
476 |
|
477 def reset_state( |
|
478 self, |
|
479 filename, |
|
480 wc_tracked=False, |
|
481 p1_tracked=False, |
|
482 p2_info=False, |
|
483 has_meaningful_mtime=True, |
|
484 parentfiledata=None, |
|
485 ): |
|
486 """Set a entry to a given state, diregarding all previous state |
|
487 |
|
488 This is to be used by the part of the dirstate API dedicated to |
|
489 adjusting the dirstate after a update/merge. |
|
490 |
|
491 note: calling this might result to no entry existing at all if the |
|
492 dirstate map does not see any point at having one for this file |
|
493 anymore. |
|
494 """ |
|
495 # copy information are now outdated |
|
496 # (maybe new information should be in directly passed to this function) |
|
497 self.copymap.pop(filename, None) |
|
498 |
|
499 if not (p1_tracked or p2_info or wc_tracked): |
|
500 old_entry = self._map.get(filename) |
|
501 self._drop_entry(filename) |
|
502 self._dirs_decr(filename, old_entry=old_entry) |
|
503 return |
|
504 |
|
505 old_entry = self._map.get(filename) |
|
506 self._dirs_incr(filename, old_entry) |
|
507 entry = DirstateItem( |
|
508 wc_tracked=wc_tracked, |
|
509 p1_tracked=p1_tracked, |
|
510 p2_info=p2_info, |
|
511 has_meaningful_mtime=has_meaningful_mtime, |
|
512 parentfiledata=parentfiledata, |
|
513 ) |
|
514 self._insert_entry(filename, entry) |
|
515 |
516 def set_tracked(self, filename): |
516 def set_tracked(self, filename): |
517 new = False |
517 new = False |
518 entry = self.get(filename) |
518 entry = self.get(filename) |
519 if entry is None: |
519 if entry is None: |
520 self._dirs_incr(filename) |
520 self._dirs_incr(filename) |
722 self._map.addfile(f, entry) |
722 self._map.addfile(f, entry) |
723 |
723 |
724 def set_tracked(self, f): |
724 def set_tracked(self, f): |
725 return self._map.set_tracked(f) |
725 return self._map.set_tracked(f) |
726 |
726 |
|
727 def reset_state( |
|
728 self, |
|
729 filename, |
|
730 wc_tracked=False, |
|
731 p1_tracked=False, |
|
732 p2_info=False, |
|
733 has_meaningful_mtime=True, |
|
734 parentfiledata=None, |
|
735 ): |
|
736 return self._map.reset_state( |
|
737 filename, |
|
738 wc_tracked, |
|
739 p1_tracked, |
|
740 p2_info, |
|
741 has_meaningful_mtime, |
|
742 parentfiledata, |
|
743 ) |
|
744 |
727 def _drop_entry(self, f): |
745 def _drop_entry(self, f): |
728 self._map.drop_item_and_copy_source(f) |
746 self._map.drop_item_and_copy_source(f) |
729 |
747 |
730 def __setitem__(self, key, value): |
748 def __setitem__(self, key, value): |
731 assert isinstance(value, DirstateItem) |
749 assert isinstance(value, DirstateItem) |