# HG changeset patch # User Pierre-Yves David # Date 2015-01-06 19:23:38 # Node ID 07a6faf939dc6f1342580a63463461f5b0d3b9f6 # Parent 31d3f973d0797859d4ef625bf866d0bcd252499f revset-filelog: handle hidden linkrev for file missing for head (issue4490) The fix for linkrev pointing to hidden revision was crashing when the file was missing from head's manifest. We now properly handle this case. (yes I feel silly) diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -837,8 +837,9 @@ def filelog(repo, subset, x): if lowesthead is None: lowesthead = {} for h in repo.heads(): - fnode = repo[h].manifest()[f] - lowesthead[fl.rev(fnode)] = h + fnode = repo[h].manifest().get(f) + if fnode is not None: + lowesthead[fl.rev(fnode)] = h headrev = lowesthead.get(fr) if headrev is None: # content is nowhere unfiltered diff --git a/tests/test-log.t b/tests/test-log.t --- a/tests/test-log.t +++ b/tests/test-log.t @@ -1744,3 +1744,59 @@ Even when a head revision is linkrev-sha $ cd .. + +Even when the file revision is missing from some head: + + $ hg init issue4490 + $ cd issue4490 + $ echo '[experimental]' >> .hg/hgrc + $ echo 'evolution=createmarkers' >> .hg/hgrc + $ echo a > a + $ hg ci -Am0 + adding a + $ echo b > b + $ hg ci -Am1 + adding b + $ echo B > b + $ hg ci --amend -m 1 + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ echo c > c + $ hg ci -Am2 + adding c + created new head + $ hg up 'head() and not .' + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ hg log -G + o changeset: 4:db815d6d32e6 + | tag: tip + | parent: 0:f7b1eb17ad24 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: 2 + | + | @ changeset: 3:9bc8ce7f9356 + |/ parent: 0:f7b1eb17ad24 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: 1 + | + o changeset: 0:f7b1eb17ad24 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: 0 + + $ hg log -f -G b + @ changeset: 3:9bc8ce7f9356 + | parent: 0:f7b1eb17ad24 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: 1 + | + $ hg log -G b + @ changeset: 3:9bc8ce7f9356 + | parent: 0:f7b1eb17ad24 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: 1 + |