Mercurial > public > mercurial-scm > hg
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 |