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: