mergestate: add `allextras()` to get all extras
`extras()` can only be used for getting extra for a file. However at
couple of places in code, we wanted to iterate over all the extras stored with
the mergestate and they were accessing the private `_stateextras`.
We add a new function for this.
Differential Revision: https://phab.mercurial-scm.org/D9190
--- a/mercurial/commit.py Tue Oct 06 19:11:34 2020 +0530
+++ b/mercurial/commit.py Sat Oct 10 12:43:04 2020 +0530
@@ -155,7 +155,7 @@
copy_sd = repo.filecopiesmode == b'changeset-sidedata'
if copy_sd and len(ctx.parents()) > 1:
if ms.active():
- for fname in sorted(ms._stateextras.keys()):
+ for fname in sorted(ms.allextras().keys()):
might_removed = ms.extras(fname).get(b'merge-removal-candidate')
if might_removed == b'yes':
if fname in ctx:
--- a/mercurial/debugcommands.py Tue Oct 06 19:11:34 2020 +0530
+++ b/mercurial/debugcommands.py Sat Oct 10 12:43:04 2020 +0530
@@ -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.allextras())):
if f in ms:
# If file is in mergestate, we have already processed it's extras
continue
--- a/mercurial/mergestate.py Tue Oct 06 19:11:34 2020 +0530
+++ b/mercurial/mergestate.py Sat Oct 10 12:43:04 2020 +0530
@@ -306,7 +306,12 @@
):
yield f
+ def allextras(self):
+ """ return all extras information stored with the mergestate """
+ return self._stateextras
+
def extras(self, filename):
+ """ return extras stored with the mergestate for the given filename """
return self._stateextras[filename]
def _resolve(self, preresolve, dfile, wctx):