Mercurial > hg
changeset 21835:b342c3e2518a
memctx: add _manifest implementation that computes the filenode
This is an initial implementation of having a manifest for memctx that computes
the hash in the same way that filenodes are computed elsewhere.
author | Sean Farley <sean.michael.farley@gmail.com> |
---|---|
date | Thu, 29 May 2014 16:12:59 -0500 |
parents | e4d35aa9056c |
children | 232038a05fdb |
files | mercurial/context.py |
diffstat | 1 files changed, 22 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/context.py Tue Apr 29 16:43:59 2014 -0500 +++ b/mercurial/context.py Thu May 29 16:12:59 2014 -0500 @@ -13,6 +13,7 @@ import obsolete as obsmod import repoview import fileset +import revlog propertycache = util.propertycache @@ -1587,6 +1588,27 @@ """commit context to the repo""" return self._repo.commitctx(self) + @propertycache + def _manifest(self): + """generate a manifest based on the return values of filectxfn""" + + # keep this simple for now; just worry about p1 + pctx = self._parents[0] + man = pctx.manifest().copy() + + for f, fnode in man.iteritems(): + p1node = nullid + p2node = nullid + p = pctx[f].parents() + if len(p) > 0: + p1node = p[0].node() + if len(p) > 1: + p2node = p[1].node() + man[f] = revlog.hash(self[f].data(), p1node, p2node) + + return man + + class memfilectx(committablefilectx): """memfilectx represents an in-memory file to commit.