# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 2020-08-05 10:30:25 # Node ID 3c783ff08d40cbaf36eb27ffe1d296718c0f1d77 # Parent e5b4061f32bec1609a512a2efaf2947cc3bbfaef 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 diff --git a/hgext/convert/hg.py b/hgext/convert/hg.py --- a/hgext/convert/hg.py +++ b/hgext/convert/hg.py @@ -229,7 +229,7 @@ class mercurial_sink(common.converter_si followcopies=False, ) - for file, (action, info, msg) in pycompat.iteritems(mresult.actions): + for file, (action, info, msg) in mresult.filemap(): if source.targetfilebelongstosource(file): # If the file belongs to the source repo, ignore the p2 # since it will be covered by the existing fileset. diff --git a/hgext/remotefilelog/__init__.py b/hgext/remotefilelog/__init__.py --- a/hgext/remotefilelog/__init__.py +++ b/hgext/remotefilelog/__init__.py @@ -497,7 +497,7 @@ def checkunknownfiles(orig, repo, wctx, if isenabled(repo): files = [] sparsematch = repo.maybesparsematch(mctx.rev()) - for f, (m, actionargs, msg) in pycompat.iteritems(mresult.actions): + for f, (m, actionargs, msg) in mresult.filemap(): if sparsematch and not sparsematch(f): continue if m in ( diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -541,7 +541,7 @@ def _filternarrowactions(narrowmatch, br } # We mutate the items in the dict during iteration, so iterate # over a copy. - for f, action in list(mresult.actions.items()): + for f, action in mresult.filemap(): if narrowmatch(f): pass elif not branchmerge: @@ -668,9 +668,13 @@ class mergeresult(object): return sum(len(self._actionmapping[a]) for a in actions) - @property - def actions(self): - return self._filemapping + def filemap(self, sort=False): + if sorted: + for key, val in sorted(pycompat.iteritems(self._filemapping)): + yield key, val + else: + for key, val in pycompat.iteritems(self._filemapping): + yield key, val @property def diverge(self): @@ -1137,7 +1141,7 @@ def calculateupdates( ): renamedelete = mresult1.renamedelete - for f, a in sorted(pycompat.iteritems(mresult1.actions)): + for f, a in mresult1.filemap(sort=True): m, args, msg = a repo.ui.debug(b' %s: %s -> %s\n' % (f, msg, m)) if f in fbids: diff --git a/mercurial/sparse.py b/mercurial/sparse.py --- a/mercurial/sparse.py +++ b/mercurial/sparse.py @@ -388,7 +388,7 @@ def filterupdatesactions(repo, wctx, mct sparsematch = matcher(repo, [mctx.rev()]) temporaryfiles = [] - for file, action in pycompat.iteritems(mresult.actions): + for file, action in mresult.filemap(): type, args, msg = action files.add(file) if sparsematch(file):