diff --git a/mercurial/context.py b/mercurial/context.py --- a/mercurial/context.py +++ b/mercurial/context.py @@ -2526,6 +2526,7 @@ return len(self._cache) == 0 def clean(self): + self._mergestate = None self._cache = {} def _compact(self): @@ -2586,6 +2587,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, self) + return self._mergestate + class overlayworkingfilectx(committablefilectx): """Wrap a ``workingfilectx`` but intercepts all writes into an in-memory