diff --git a/mercurial/commit.py b/mercurial/commit.py --- a/mercurial/commit.py +++ b/mercurial/commit.py @@ -147,7 +147,7 @@ # some cases. ms = mergestate.mergestate.read(repo) if ms.active(): - for fname in sorted(ms._stateextras.keys()): + for fname in sorted(ms.extras().keys()): might_removed = ms.extras(fname).get(b'merge-removal-candidate') if might_removed == b'yes': if fname in ctx: diff --git a/mercurial/debugcommands.py b/mercurial/debugcommands.py --- a/mercurial/debugcommands.py +++ b/mercurial/debugcommands.py @@ -2107,7 +2107,7 @@ fm_files.end() fm_extras = fm.nested(b'extras') - for f, d in sorted(pycompat.iteritems(ms._stateextras)): + for f, d in sorted(pycompat.iteritems(ms.extras())): if f in ms: # If file is in mergestate, we have already processed it's extras continue diff --git a/mercurial/mergestate.py b/mercurial/mergestate.py --- a/mercurial/mergestate.py +++ b/mercurial/mergestate.py @@ -305,7 +305,12 @@ ): yield f - def extras(self, filename): + def extras(self, filename=None): + """ return extras stored with the mergestate + + if filename is passed, extras for that file is only returned """ + if filename is None: + return self._stateextras return self._stateextras[filename] def _resolve(self, preresolve, dfile, wctx):