Mercurial > hg
comparison mercurial/dirstatemap.py @ 47896:d5b54917eb92
dirstatemap: temporarily return early in `reset_state`
We are about to migrate `addfile` to the new `DirstateItem__init__` and having
these early return will the new series of patches to be clearer.
Differential Revision: https://phab.mercurial-scm.org/D11321
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 16 Jul 2021 16:29:16 +0200 |
parents | 226c7dbeea11 |
children | 4f0ebf83e4dc |
comparison
equal
deleted
inserted
replaced
47895:22c39f8acf78 | 47896:d5b54917eb92 |
---|---|
254 # (maybe new information should be in directly passed to this function) | 254 # (maybe new information should be in directly passed to this function) |
255 self.copymap.pop(filename, None) | 255 self.copymap.pop(filename, None) |
256 | 256 |
257 if not (p1_tracked or p2_tracked or wc_tracked): | 257 if not (p1_tracked or p2_tracked or wc_tracked): |
258 self.dropfile(filename) | 258 self.dropfile(filename) |
259 return | |
259 elif merged: | 260 elif merged: |
260 # XXX might be merged and removed ? | 261 # XXX might be merged and removed ? |
261 entry = self.get(filename) | 262 entry = self.get(filename) |
262 if entry is not None and entry.tracked: | 263 if entry is not None and entry.tracked: |
263 # XXX mostly replicate dirstate.other parent. We should get | 264 # XXX mostly replicate dirstate.other parent. We should get |
264 # the higher layer to pass us more reliable data where `merged` | 265 # the higher layer to pass us more reliable data where `merged` |
265 # actually mean merged. Dropping the else clause will show | 266 # actually mean merged. Dropping the else clause will show |
266 # failure in `test-graft.t` | 267 # failure in `test-graft.t` |
267 self.addfile(filename, merged=True) | 268 self.addfile(filename, merged=True) |
269 return | |
268 else: | 270 else: |
269 self.addfile(filename, from_p2=True) | 271 self.addfile(filename, from_p2=True) |
272 return | |
270 elif not (p1_tracked or p2_tracked) and wc_tracked: | 273 elif not (p1_tracked or p2_tracked) and wc_tracked: |
271 self.addfile(filename, added=True, possibly_dirty=possibly_dirty) | 274 self.addfile(filename, added=True, possibly_dirty=possibly_dirty) |
275 return | |
272 elif (p1_tracked or p2_tracked) and not wc_tracked: | 276 elif (p1_tracked or p2_tracked) and not wc_tracked: |
273 # XXX might be merged and removed ? | 277 # XXX might be merged and removed ? |
274 old_entry = self._map.get(filename) | 278 old_entry = self._map.get(filename) |
275 self._dirs_decr(filename, old_entry=old_entry, remove_variant=True) | 279 self._dirs_decr(filename, old_entry=old_entry, remove_variant=True) |
276 self._map[filename] = DirstateItem.from_v1_data(b'r', 0, 0, 0) | 280 self._map[filename] = DirstateItem.from_v1_data(b'r', 0, 0, 0) |
277 self.nonnormalset.add(filename) | 281 self.nonnormalset.add(filename) |
282 return | |
278 elif clean_p2 and wc_tracked: | 283 elif clean_p2 and wc_tracked: |
279 if p1_tracked or self.get(filename) is not None: | 284 if p1_tracked or self.get(filename) is not None: |
280 # XXX the `self.get` call is catching some case in | 285 # XXX the `self.get` call is catching some case in |
281 # `test-merge-remove.t` where the file is tracked in p1, the | 286 # `test-merge-remove.t` where the file is tracked in p1, the |
282 # p1_tracked argument is False. | 287 # p1_tracked argument is False. |
283 # | 288 # |
284 # In addition, this seems to be a case where the file is marked | 289 # In addition, this seems to be a case where the file is marked |
285 # as merged without actually being the result of a merge | 290 # as merged without actually being the result of a merge |
286 # action. So thing are not ideal here. | 291 # action. So thing are not ideal here. |
287 self.addfile(filename, merged=True) | 292 self.addfile(filename, merged=True) |
293 return | |
288 else: | 294 else: |
289 self.addfile(filename, from_p2=True) | 295 self.addfile(filename, from_p2=True) |
296 return | |
290 elif not p1_tracked and p2_tracked and wc_tracked: | 297 elif not p1_tracked and p2_tracked and wc_tracked: |
291 self.addfile(filename, from_p2=True, possibly_dirty=possibly_dirty) | 298 self.addfile(filename, from_p2=True, possibly_dirty=possibly_dirty) |
299 return | |
292 elif possibly_dirty: | 300 elif possibly_dirty: |
293 self.addfile(filename, possibly_dirty=possibly_dirty) | 301 self.addfile(filename, possibly_dirty=possibly_dirty) |
302 return | |
294 elif wc_tracked: | 303 elif wc_tracked: |
295 # this is a "normal" file | 304 # this is a "normal" file |
296 if parentfiledata is None: | 305 if parentfiledata is None: |
297 msg = b'failed to pass parentfiledata for a normal file: %s' | 306 msg = b'failed to pass parentfiledata for a normal file: %s' |
298 msg %= filename | 307 msg %= filename |
299 raise error.ProgrammingError(msg) | 308 raise error.ProgrammingError(msg) |
300 mode, size, mtime = parentfiledata | 309 mode, size, mtime = parentfiledata |
301 self.addfile(filename, mode=mode, size=size, mtime=mtime) | 310 self.addfile(filename, mode=mode, size=size, mtime=mtime) |
302 self.nonnormalset.discard(filename) | 311 self.nonnormalset.discard(filename) |
312 return | |
303 else: | 313 else: |
304 assert False, 'unreachable' | 314 assert False, 'unreachable' |
305 | 315 |
306 def set_untracked(self, f): | 316 def set_untracked(self, f): |
307 """Mark a file as no longer tracked in the dirstate map""" | 317 """Mark a file as no longer tracked in the dirstate map""" |