revset-filelog: handle hidden linkrev for file missing for head (issue4490)
authorPierre-Yves David <pierre-yves.david@fb.com>
Tue, 06 Jan 2015 11:23:38 -0800
changeset 23729 07a6faf939dc
parent 23728 31d3f973d079
child 23730 4b56219a5ac2
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)
mercurial/revset.py
tests/test-log.t
--- a/mercurial/revset.py	Thu Nov 27 02:04:30 2014 +0100
+++ b/mercurial/revset.py	Tue Jan 06 11:23:38 2015 -0800
@@ -837,8 +837,9 @@
                 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
--- a/tests/test-log.t	Thu Nov 27 02:04:30 2014 +0100
+++ b/tests/test-log.t	Tue Jan 06 11:23:38 2015 -0800
@@ -1744,3 +1744,59 @@
   
 
   $ 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
+  |