Patchwork [3,of,4,STABLE] committablefilectx: propagate ancestry info to parent to fix annotation

login
register
mail settings
Submitter Yuya Nishihara
Date April 18, 2015, 11:28 a.m.
Message ID <5551511c8a017481b16c.1429356493@mimosa>
Download mbox | patch
Permalink /patch/8737/
State Accepted
Headers show

Comments

Yuya Nishihara - April 18, 2015, 11:28 a.m.
# HG changeset patch
# User Yuya Nishihara <yuya@tcha.org>
# Date 1429333855 -32400
#      Sat Apr 18 14:10:55 2015 +0900
# Branch stable
# Node ID 5551511c8a017481b16c0cdbc4b2deb3d7b01d28
# Parent  54242b301d723b516a27932e13d83fd213a0e3bb
committablefilectx: propagate ancestry info to parent to fix annotation

Before this patch, annotating working directory could include wrong revisions
that were hidden or belonged to different branches. This fixes wfctx.parents()
to set _descendantrev so that all ancestors can take advantage of the linkrev
adjustment introduced at c48924787eaa. _adjustlinkrev() can handle 'None'
revision thanks to 5a12ef618c03.

Patch

diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -1618,7 +1618,7 @@  class committablefilectx(basefilectx):
         for pc in pcl[1:]:
             pl.append((path, filenode(pc, path), fl))
 
-        return [filectx(self._repo, p, fileid=n, filelog=l)
+        return [self._parentfilectx(p, fileid=n, filelog=l)
                 for p, n, l in pl if n != nullid]
 
     def children(self):
diff --git a/tests/test-annotate.t b/tests/test-annotate.t
--- a/tests/test-annotate.t
+++ b/tests/test-annotate.t
@@ -556,6 +556,7 @@  create history with a filerev whose link
   grafting 1:fd27c222e3e6 "contentB"
   $ echo C >> a
   $ hg commit -m 'contentC'
+  $ echo W >> a
   $ hg log -G
   @  changeset:   4:072f1e8df249
   |  tag:         tip
@@ -592,6 +593,12 @@  Annotate should list ancestor of startin
   3: B
   4: C
 
+  $ hg annotate a -r 'wdir()'
+  0 : A
+  3 : B
+  4 : C
+  4+: W
+
 Even when the starting revision is the linkrev-shadowed one:
 
   $ hg annotate a -r 3