--- a/mercurial/context.py Mon Nov 19 14:14:56 2018 +0000
+++ b/mercurial/context.py Wed Oct 10 00:49:30 2018 +0200
@@ -769,10 +769,17 @@
'linkrev-shadowing' when a file revision is used by multiple
changesets.
"""
+ toprev = None
attrs = vars(self)
- hastoprev = (r'_changeid' in attrs or r'_changectx' in attrs)
- if hastoprev:
- return self._adjustlinkrev(self.rev(), inclusive=True)
+ if r'_changeid' in attrs:
+ # We have a cached value already
+ toprev = self._changeid
+ elif r'_changectx' in attrs:
+ # We know which changelog entry we are coming from
+ toprev = self._changectx.rev()
+
+ if toprev is not None:
+ return self._adjustlinkrev(toprev, inclusive=True)
else:
return self.linkrev()