Mercurial > hg
comparison mercurial/merge.py @ 45346:3c783ff08d40
mergeresult: introduce filemap() which yields filename based mapping
We wanted to remove `actions` as this was leaking how we store things internally
and was direct access to one of the member. This introduces filemap() which
yields a map of `filename` -> `action, args, msg`.
`mergeresult.actions` has been deleted as it's no longer required.
Differential Revision: https://phab.mercurial-scm.org/D8888
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Wed, 05 Aug 2020 16:00:25 +0530 |
parents | e5b4061f32be |
children | 1aef38d973e8 |
comparison
equal
deleted
inserted
replaced
45345:e5b4061f32be | 45346:3c783ff08d40 |
---|---|
539 mergestatemod.ACTION_REMOVE, | 539 mergestatemod.ACTION_REMOVE, |
540 mergestatemod.ACTION_EXEC, | 540 mergestatemod.ACTION_EXEC, |
541 } | 541 } |
542 # We mutate the items in the dict during iteration, so iterate | 542 # We mutate the items in the dict during iteration, so iterate |
543 # over a copy. | 543 # over a copy. |
544 for f, action in list(mresult.actions.items()): | 544 for f, action in mresult.filemap(): |
545 if narrowmatch(f): | 545 if narrowmatch(f): |
546 pass | 546 pass |
547 elif not branchmerge: | 547 elif not branchmerge: |
548 mresult.removefile(f) # just updating, ignore changes outside clone | 548 mresult.removefile(f) # just updating, ignore changes outside clone |
549 elif action[0] in nooptypes: | 549 elif action[0] in nooptypes: |
666 if actions is None: | 666 if actions is None: |
667 return len(self._filemapping) | 667 return len(self._filemapping) |
668 | 668 |
669 return sum(len(self._actionmapping[a]) for a in actions) | 669 return sum(len(self._actionmapping[a]) for a in actions) |
670 | 670 |
671 @property | 671 def filemap(self, sort=False): |
672 def actions(self): | 672 if sorted: |
673 return self._filemapping | 673 for key, val in sorted(pycompat.iteritems(self._filemapping)): |
674 yield key, val | |
675 else: | |
676 for key, val in pycompat.iteritems(self._filemapping): | |
677 yield key, val | |
674 | 678 |
675 @property | 679 @property |
676 def diverge(self): | 680 def diverge(self): |
677 return self._diverge | 681 return self._diverge |
678 | 682 |
1135 if renamedelete is None or len(renamedelete) < len( | 1139 if renamedelete is None or len(renamedelete) < len( |
1136 mresult1.renamedelete | 1140 mresult1.renamedelete |
1137 ): | 1141 ): |
1138 renamedelete = mresult1.renamedelete | 1142 renamedelete = mresult1.renamedelete |
1139 | 1143 |
1140 for f, a in sorted(pycompat.iteritems(mresult1.actions)): | 1144 for f, a in mresult1.filemap(sort=True): |
1141 m, args, msg = a | 1145 m, args, msg = a |
1142 repo.ui.debug(b' %s: %s -> %s\n' % (f, msg, m)) | 1146 repo.ui.debug(b' %s: %s -> %s\n' % (f, msg, m)) |
1143 if f in fbids: | 1147 if f in fbids: |
1144 d = fbids[f] | 1148 d = fbids[f] |
1145 if m in d: | 1149 if m in d: |