diff --git a/mercurial/context.py b/mercurial/context.py --- a/mercurial/context.py +++ b/mercurial/context.py @@ -2520,6 +2520,7 @@ return len(self._cache) == 0 def clean(self): + self._mergestate = None self._cache = {} def _compact(self): @@ -2580,6 +2581,11 @@ self._repo, path, parent=self, filelog=filelog ) + def mergestate(self, clean=False): + if clean or self._mergestate is None: + self._mergestate = mergestatemod.memmergestate(self._repo) + return self._mergestate + class overlayworkingfilectx(committablefilectx): """Wrap a ``workingfilectx`` but intercepts all writes into an in-memory