comparison mercurial/context.py @ 35295:bea46aed1e1b

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
author Phil Cohen <phillco@fb.com>
date Thu, 07 Dec 2017 13:20:47 -0800
parents d4f65050f3c5
children 228916ca12b5
comparison
equal deleted inserted replaced
35294:d4f65050f3c5 35295:bea46aed1e1b
2043 raise error.ProgrammingError("No such file or directory: %s" % 2043 raise error.ProgrammingError("No such file or directory: %s" %
2044 self._path) 2044 self._path)
2045 else: 2045 else:
2046 return self._wrappedctx[path].flags() 2046 return self._wrappedctx[path].flags()
2047 2047
2048 def _existsinparent(self, path):
2049 try:
2050 # ``commitctx` raises a ``ManifestLookupError`` if a path does not
2051 # exist, unlike ``workingctx``, which returns a ``workingfilectx``
2052 # with an ``exists()`` function.
2053 self._wrappedctx[path]
2054 return True
2055 except error.ManifestLookupError:
2056 return False
2057
2048 def write(self, path, data, flags=''): 2058 def write(self, path, data, flags=''):
2049 if data is None: 2059 if data is None:
2050 raise error.ProgrammingError("data must be non-None") 2060 raise error.ProgrammingError("data must be non-None")
2051 self._markdirty(path, exists=True, data=data, date=util.makedate(), 2061 self._markdirty(path, exists=True, data=data, date=util.makedate(),
2052 flags=flags) 2062 flags=flags)
2068 if (self._cache[path]['exists'] and 2078 if (self._cache[path]['exists'] and
2069 'l' in self._cache[path]['flags']): 2079 'l' in self._cache[path]['flags']):
2070 return self.exists(self._cache[path]['data'].strip()) 2080 return self.exists(self._cache[path]['data'].strip())
2071 else: 2081 else:
2072 return self._cache[path]['exists'] 2082 return self._cache[path]['exists']
2073 return self._wrappedctx[path].exists() 2083
2084 return self._existsinparent(path)
2074 2085
2075 def lexists(self, path): 2086 def lexists(self, path):
2076 """lexists returns True if the path exists""" 2087 """lexists returns True if the path exists"""
2077 if self.isdirty(path): 2088 if self.isdirty(path):
2078 return self._cache[path]['exists'] 2089 return self._cache[path]['exists']
2079 return self._wrappedctx[path].lexists() 2090
2091 return self._existsinparent(path)
2080 2092
2081 def size(self, path): 2093 def size(self, path):
2082 if self.isdirty(path): 2094 if self.isdirty(path):
2083 if self._cache[path]['exists']: 2095 if self._cache[path]['exists']:
2084 return len(self._cache[path]['data']) 2096 return len(self._cache[path]['data'])