# HG changeset patch # User Jun Wu # Date 1503964181 25200 # Node ID becce02036e1b4d795342ec7c822e4307fb70dfc # Parent d0f1e3d3ef4d0302f7437638c733c5f7c0478f39 context: make parents and text optional in metadataonlyctx The metadataonlyctx is to copy an existing context with some minor metadata changes. If the caller only wants to change "extra", or "user", ideally it does not have to read and pass "parents" and "text" information. This patch makes "parents" and "text" optionally to convenient callers. Differential Revision: https://phab.mercurial-scm.org/D548 diff -r d0f1e3d3ef4d -r becce02036e1 mercurial/context.py --- a/mercurial/context.py Thu Aug 17 18:09:32 2017 +0200 +++ b/mercurial/context.py Mon Aug 28 16:49:41 2017 -0700 @@ -2298,15 +2298,23 @@ def __new__(cls, repo, originalctx, *args, **kwargs): 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 self._node = None self._originalctx = originalctx self._manifestnode = originalctx.manifestnode() - parents = [(p or nullid) for p in parents] - p1, p2 = self._parents = [changectx(self._repo, p) for p in parents] + if parents is None: + parents = originalctx.parents() + else: + parents = [repo[p] for p in parents if p is not None] + parents = parents[:] + while len(parents) < 2: + parents.append(repo[nullid]) + p1, p2 = self._parents = parents # sanity check to ensure that the reused manifest parents are # manifests of our commit parents