# HG changeset patch # User Pierre-Yves David # Date 2014-12-30 07:40:24 # Node ID c624fb2c42392e14d336e3196d956677a3e2a385 # Parent aaa76612b3c064c6d0a9b6c10db2f4ff7753105a linkrev: also adjust linkrev when bootstrapping 'follow' revset The follow revset (used by `hg log --follow`) now uses the new 'introrev' method to bootstrap its traversal. This catches issues from linkrev-shadowing of the changesets introducing the version of a file in source changeset. A new test has been added to display pathological cases. Another test is affected because it was meant to test this behavior but actually failed to do so for half of the output. The output are now similar. diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -807,7 +807,7 @@ def _follow(repo, subset, x, name, follo cx = c[x] s = set(ctx.rev() for ctx in cx.ancestors(followfirst=followfirst)) # include the revision responsible for the most recent version - s.add(cx.linkrev()) + s.add(cx.introrev()) else: return baseset() else: diff --git a/tests/test-log.t b/tests/test-log.t --- a/tests/test-log.t +++ b/tests/test-log.t @@ -1559,7 +1559,7 @@ hg log -f dir across branches o a $ hg log -f d/a -T '{desc}' -G - o b + @ c | o a @@ -1656,4 +1656,21 @@ plain log lists the original version date: Thu Jan 01 00:00:00 1970 +0000 summary: content1 + +hg log -f from the grafted changeset +(The bootstrap should properly take the topology in account) + + $ hg up 'desc(content3)^' + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg log -Gf a + @ changeset: 3:15b2327059e5 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: content2 + | + o changeset: 0:ae0a3c9f9e95 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: content1 + $ cd ..