mergestate: add accessors for local and other nodeid, not just contexts
The mergestate can contain invalid nodeids. In that case,
`mergestate.localctx` or `mergestate.otherctx` will fail. This patch
provides a way of accessing the nodeid without failing in such cases.
Differential Revision: https://phab.mercurial-scm.org/D8040
--- a/mercurial/merge.py Wed Jan 15 22:24:16 2020 -0800
+++ b/mercurial/merge.py Wed Jan 29 11:30:16 2020 -0800
@@ -386,18 +386,26 @@
return configmergedriver
@util.propertycache
- def localctx(self):
+ def local(self):
if self._local is None:
- msg = b"localctx accessed but self._local isn't set"
+ msg = b"local accessed but self._local isn't set"
raise error.ProgrammingError(msg)
- return self._repo[self._local]
+ return self._local
+
+ @util.propertycache
+ def localctx(self):
+ return self._repo[self.local]
+
+ @util.propertycache
+ def other(self):
+ if self._other is None:
+ msg = b"other accessed but self._other isn't set"
+ raise error.ProgrammingError(msg)
+ return self._other
@util.propertycache
def otherctx(self):
- if self._other is None:
- msg = b"otherctx accessed but self._other isn't set"
- raise error.ProgrammingError(msg)
- return self._repo[self._other]
+ return self._repo[self.other]
def active(self):
"""Whether mergestate is active.