mercurial/context.py
changeset 21835 b342c3e2518a
parent 21834 e4d35aa9056c
child 21844 7cfd94ec5d30
--- 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.