[PATCH 2 of 3] metadataonlyctx: make parents and text optional

Jun Wu quark at fb.com
Sun Mar 26 14:41:40 EDT 2017


# HG changeset patch
# User Jun Wu <quark at fb.com>
# Date 1490551051 25200
#      Sun Mar 26 10:57:31 2017 -0700
# Node ID 336512ee2f947f07149e399a84927f9d820d2b62
# Parent  65636eb4a1e55f69daf6795a9ecad7a3da39108e
# Available At https://bitbucket.org/quark-zju/hg-draft
#              hg pull https://bitbucket.org/quark-zju/hg-draft -r 336512ee2f94
metadataonlyctx: make parents and text optional

Sometimes the caller is not interested in changing parents or text
(description), but only the commit metadata. This makes that easier.

diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -2042,6 +2042,8 @@ class metadataonlyctx(committablectx):
         return super(metadataonlyctx, cls).__new__(cls, repo)
 
-    def __init__(self, repo, originalctx, parents, text, user=None, date=None,
-                 extra=None, editor=False):
+    def __init__(self, repo, originalctx, parents=None, text=None, user=None,
+                 date=None, extra=None, editor=False):
+        if text is None:
+            text = originalctx.description()
         super(metadataonlyctx, self).__init__(repo, text, user, date, extra)
         self._rev = None
@@ -2049,4 +2051,8 @@ class metadataonlyctx(committablectx):
         self._originalctx = originalctx
         self._manifestnode = originalctx.manifestnode()
+        if parents is None:
+            parents = [p.node() for p in originalctx.parents()]
+            while len(parents) < 2:
+                parents.append(nullid)
         parents = [(p or nullid) for p in parents]
         p1, p2 = self._parents = [changectx(self._repo, p) for p in parents]


More information about the Mercurial-devel mailing list