comparison mercurial/context.py @ 35325:71edd38c4bb4

overlayworkingctx: add ``tomemctx()`` Differential Revision: https://phab.mercurial-scm.org/D1242
author Phil Cohen <phillco@fb.com>
date Thu, 07 Dec 2017 22:26:07 -0800
parents 72fbdd373de8
children dc9da4f4f363
comparison
equal deleted inserted replaced
35324:72fbdd373de8 35325:71edd38c4bb4
2175 else: 2175 else:
2176 raise error.ProgrammingError("No such file or directory: %s" % 2176 raise error.ProgrammingError("No such file or directory: %s" %
2177 self._path) 2177 self._path)
2178 return self._wrappedctx[path].size() 2178 return self._wrappedctx[path].size()
2179 2179
2180 def tomemctx(self, text, branch=None, extra=None, date=None, parents=None,
2181 user=None, editor=None):
2182 """Converts this ``overlayworkingctx`` into a ``memctx`` ready to be
2183 committed.
2184
2185 ``text`` is the commit message.
2186 ``parents`` (optional) are rev numbers.
2187 """
2188 # Default parents to the wrapped contexts' if not passed.
2189 if parents is None:
2190 parents = self._wrappedctx.parents()
2191 if len(parents) == 1:
2192 parents = (parents[0], None)
2193
2194 # ``parents`` is passed as rev numbers; convert to ``commitctxs``.
2195 if parents[1] is None:
2196 parents = (self._repo[parents[0]], None)
2197 else:
2198 parents = (self._repo[parents[0]], self._repo[parents[1]])
2199
2200 files = self._cache.keys()
2201 def getfile(repo, memctx, path):
2202 if self._cache[path]['exists']:
2203 return memfilectx(repo, path,
2204 self._cache[path]['data'],
2205 'l' in self._cache[path]['flags'],
2206 'x' in self._cache[path]['flags'],
2207 self._cache[path]['copied'],
2208 memctx)
2209 else:
2210 # Returning None, but including the path in `files`, is
2211 # necessary for memctx to register a deletion.
2212 return None
2213 return memctx(self._repo, parents, text, files, getfile, date=date,
2214 extra=extra, user=user, branch=branch, editor=editor)
2215
2180 def isdirty(self, path): 2216 def isdirty(self, path):
2181 return path in self._cache 2217 return path in self._cache
2182 2218
2183 def isempty(self): 2219 def isempty(self):
2184 # We need to discard any keys that are actually clean before the empty 2220 # We need to discard any keys that are actually clean before the empty