overlayworkingctx: add `_checkexist(path)`
This is in preparation to switch this class to inheriting (and being based off
a) `commitctx` instead of a `workingctx`. `filectx` has no `exists` function,
so this is how we'll fall back in that case.
Differential Revision: https://phab.mercurial-scm.org/D1237
--- a/mercurial/context.py Thu Dec 07 13:20:47 2017 -0800
+++ b/mercurial/context.py Thu Dec 07 13:20:47 2017 -0800
@@ -2045,6 +2045,16 @@
else:
return self._wrappedctx[path].flags()
+ def _existsinparent(self, path):
+ try:
+ # ``commitctx` raises a ``ManifestLookupError`` if a path does not
+ # exist, unlike ``workingctx``, which returns a ``workingfilectx``
+ # with an ``exists()`` function.
+ self._wrappedctx[path]
+ return True
+ except error.ManifestLookupError:
+ return False
+
def write(self, path, data, flags=''):
if data is None:
raise error.ProgrammingError("data must be non-None")
@@ -2070,13 +2080,15 @@
return self.exists(self._cache[path]['data'].strip())
else:
return self._cache[path]['exists']
- return self._wrappedctx[path].exists()
+
+ return self._existsinparent(path)
def lexists(self, path):
"""lexists returns True if the path exists"""
if self.isdirty(path):
return self._cache[path]['exists']
- return self._wrappedctx[path].lexists()
+
+ return self._existsinparent(path)
def size(self, path):
if self.isdirty(path):