[PATCH 2 of 3 STABLE] adjustlinkrev: handle 'None' value as source
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Fri Mar 20 02:41:34 CDT 2015
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at fb.com>
# Date 1426834654 25200
# Thu Mar 19 23:57:34 2015 -0700
# Branch stable
# Node ID 2863d21af964d0ff594f9cfb7e2411280716398e
# Parent 0bfd0d3ee74a21535874ca4d8cd71cd877366f78
adjustlinkrev: handle 'None' value as source
When the source rev value is 'None', the ctx is a working context. We cannot
compute the ancestors from there so we directly skip to its parents. This will
be necessary to allow 'None' value for '_descendantrev' itself necessary to make
all contexts used in 'mergecopies' reuse the same '_ancestrycontext'.
diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -772,13 +772,19 @@ class basefilectx(object):
fr = filelog.rev(fnode)
lkr = filelog.linkrev(fr)
# hack to reuse ancestor computation when searching for renames
memberanc = getattr(self, '_ancestrycontext', None)
iteranc = None
- revs = [srcrev]
+ if srcrev is None:
+ # wctx case, used by workingfilectx during mergecopy
+ revs = [p.rev() for p in self._repo[None].parents()]
+ inclusive = True # we skipped the real (revless) source
+ else:
+ revs = [srcrev]
if memberanc is None:
- memberanc = iteranc = cl.ancestors(revs, lkr, inclusive=inclusive)
+ memberanc = iteranc = cl.ancestors(revs, lkr,
+ inclusive=inclusive)
# check if this linkrev is an ancestor of srcrev
if lkr not in memberanc:
if iteranc is None:
iteranc = cl.ancestors(revs, lkr, inclusive=inclusive)
for a in iteranc:
More information about the Mercurial-devel
mailing list