This case was fishy and can be dealt with by passing more accurate data a higher
level.
This clarify the API and prepare for a larger rework of the data we feeds to
the dirstate.
| Alphare | |
| pulkit |
| hg-reviewers |
This case was fishy and can be dealt with by passing more accurate data a higher
level.
This clarify the API and prepare for a larger rework of the data we feeds to
the dirstate.
| No Linters Available |
| No Unit Test Coverage |
| Path | Packages | |||
|---|---|---|---|---|
| M | mercurial/dirstatemap.py (10 lines) | |||
| M | mercurial/mergestate.py (9 lines) |
| Commit | Parents | Author | Summary | Date |
|---|---|---|---|---|
| ba9e72dd99bd | 0cd4c9dc5ee7 | Pierre-Yves David | Sep 30 2021, 6:00 PM |
| Status | Author | Revision | |
|---|---|---|---|
| Abandoned | marmoute | ||
| Abandoned | marmoute | ||
| Abandoned | marmoute | ||
| Abandoned | marmoute | ||
| Abandoned | marmoute | ||
| Abandoned | marmoute | ||
| Abandoned | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute | ||
| Closed | marmoute |
| self.copymap.pop(filename, None) | self.copymap.pop(filename, None) | ||||
| if not (p1_tracked or p2_tracked or wc_tracked): | if not (p1_tracked or p2_tracked or wc_tracked): | ||||
| old_entry = self._map.pop(filename, None) | old_entry = self._map.pop(filename, None) | ||||
| self._dirs_decr(filename, old_entry=old_entry) | self._dirs_decr(filename, old_entry=old_entry) | ||||
| self.copymap.pop(filename, None) | self.copymap.pop(filename, None) | ||||
| return | return | ||||
| elif merged: | elif merged: | ||||
| # XXX might be merged and removed ? | pass | ||||
| entry = self.get(filename) | |||||
| if entry is None or not entry.tracked: | |||||
| # XXX mostly replicate dirstate.other parent. We should get | |||||
| # the higher layer to pass us more reliable data where `merged` | |||||
| # actually mean merged. Dropping this clause will show failure | |||||
| # in `test-graft.t` | |||||
| merged = False | |||||
| clean_p2 = True | |||||
| elif not (p1_tracked or p2_tracked) and wc_tracked: | elif not (p1_tracked or p2_tracked) and wc_tracked: | ||||
| pass # file is added, nothing special to adjust | pass # file is added, nothing special to adjust | ||||
| elif (p1_tracked or p2_tracked) and not wc_tracked: | elif (p1_tracked or p2_tracked) and not wc_tracked: | ||||
| pass | pass | ||||
| elif clean_p2 and wc_tracked: | elif clean_p2 and wc_tracked: | ||||
| pass | pass | ||||
| elif not p1_tracked and p2_tracked and wc_tracked: | elif not p1_tracked and p2_tracked and wc_tracked: | ||||
| clean_p2 = True | clean_p2 = True | ||||
| ) | ) | ||||
| # merge | # merge | ||||
| for f, args, msg in actions.get(ACTION_MERGE, []): | for f, args, msg in actions.get(ACTION_MERGE, []): | ||||
| f1, f2, fa, move, anc = args | f1, f2, fa, move, anc = args | ||||
| if branchmerge: | if branchmerge: | ||||
| # We've done a branch merge, mark this file as merged | # We've done a branch merge, mark this file as merged | ||||
| # so that we properly record the merger later | # so that we properly record the merger later | ||||
| p1_tracked = f1 == f | |||||
| p2_tracked = f2 == f | |||||
| repo.dirstate.update_file( | repo.dirstate.update_file( | ||||
| f, p1_tracked=True, wc_tracked=True, merged=True | f, | ||||
| p1_tracked=p1_tracked, | |||||
| p2_tracked=p2_tracked, | |||||
| wc_tracked=True, | |||||
| merged=p1_tracked, | |||||
| clean_p2=not p1_tracked, | |||||
| ) | ) | ||||
| if f1 != f2: # copy/rename | if f1 != f2: # copy/rename | ||||
| if move: | if move: | ||||
| repo.dirstate.update_file( | repo.dirstate.update_file( | ||||
| f1, p1_tracked=True, wc_tracked=False | f1, p1_tracked=True, wc_tracked=False | ||||
| ) | ) | ||||
| if f1 != f: | if f1 != f: | ||||
| repo.dirstate.copy(f1, f) | repo.dirstate.copy(f1, f) | ||||