tests/test-fastannotate-renames.t
changeset 39210 1ddb296e0dee
equal deleted inserted replaced
39209:1af95139e5ec 39210:1ddb296e0dee
       
     1   $ cat >> $HGRCPATH << EOF
       
     2   > [extensions]
       
     3   > fastannotate=
       
     4   > [fastannotate]
       
     5   > mainbranch=main
       
     6   > EOF
       
     7 
       
     8   $ hg init repo
       
     9   $ cd repo
       
    10 
       
    11 add or rename files on top of the master branch
       
    12 
       
    13   $ echo a1 > a
       
    14   $ echo b1 > b
       
    15   $ hg commit -qAm 1
       
    16   $ hg bookmark -i main
       
    17   $ hg fastannotate --debug -nf b
       
    18   fastannotate: b: 1 new changesets in the main branch
       
    19   0 b: b1
       
    20   $ hg fastannotate --debug -nf a
       
    21   fastannotate: a: 1 new changesets in the main branch
       
    22   0 a: a1
       
    23   $ echo a2 >> a
       
    24   $ cat > b << EOF
       
    25   > b0
       
    26   > b1
       
    27   > EOF
       
    28   $ hg mv a t
       
    29   $ hg mv b a
       
    30   $ hg mv t b
       
    31   $ hg commit -m 'swap names'
       
    32 
       
    33 existing linelogs are not helpful with such renames in side branches
       
    34 
       
    35   $ hg fastannotate --debug -nf a
       
    36   fastannotate: a: linelog cannot help in annotating this revision
       
    37   1 a: b0
       
    38   0 b: b1
       
    39   $ hg fastannotate --debug -nf b
       
    40   fastannotate: b: linelog cannot help in annotating this revision
       
    41   0 a: a1
       
    42   1 b: a2
       
    43 
       
    44 move main branch forward, rebuild should happen
       
    45 
       
    46   $ hg bookmark -i main -r . -q
       
    47   $ hg fastannotate --debug -nf b
       
    48   fastannotate: b: cache broken and deleted
       
    49   fastannotate: b: 2 new changesets in the main branch
       
    50   0 a: a1
       
    51   1 b: a2
       
    52   $ hg fastannotate --debug -nf b
       
    53   fastannotate: b: using fast path (resolved fctx: True)
       
    54   0 a: a1
       
    55   1 b: a2
       
    56 
       
    57 for rev 0, the existing linelog is still useful for a, but not for b
       
    58 
       
    59   $ hg fastannotate --debug -nf a -r 0
       
    60   fastannotate: a: using fast path (resolved fctx: True)
       
    61   0 a: a1
       
    62   $ hg fastannotate --debug -nf b -r 0
       
    63   fastannotate: b: linelog cannot help in annotating this revision
       
    64   0 b: b1
       
    65 
       
    66 a rebuild can also be triggered if "the main branch last time" mismatches
       
    67 
       
    68   $ echo a3 >> a
       
    69   $ hg commit -m a3
       
    70   $ cat >> b << EOF
       
    71   > b3
       
    72   > b4
       
    73   > EOF
       
    74   $ hg commit -m b4
       
    75   $ hg bookmark -i main -q
       
    76   $ hg fastannotate --debug -nf a
       
    77   fastannotate: a: cache broken and deleted
       
    78   fastannotate: a: 3 new changesets in the main branch
       
    79   1 a: b0
       
    80   0 b: b1
       
    81   2 a: a3
       
    82   $ hg fastannotate --debug -nf a
       
    83   fastannotate: a: using fast path (resolved fctx: True)
       
    84   1 a: b0
       
    85   0 b: b1
       
    86   2 a: a3
       
    87 
       
    88 linelog can be updated without being helpful
       
    89 
       
    90   $ hg mv a t
       
    91   $ hg mv b a
       
    92   $ hg mv t b
       
    93   $ hg commit -m 'swap names again'
       
    94   $ hg fastannotate --debug -nf b
       
    95   fastannotate: b: 1 new changesets in the main branch
       
    96   1 a: b0
       
    97   0 b: b1
       
    98   2 a: a3
       
    99   $ hg fastannotate --debug -nf b
       
   100   fastannotate: b: linelog cannot help in annotating this revision
       
   101   1 a: b0
       
   102   0 b: b1
       
   103   2 a: a3
       
   104 
       
   105 move main branch forward again, rebuilds are one-time
       
   106 
       
   107   $ hg bookmark -i main -q
       
   108   $ hg fastannotate --debug -nf a
       
   109   fastannotate: a: cache broken and deleted
       
   110   fastannotate: a: 4 new changesets in the main branch
       
   111   0 a: a1
       
   112   1 b: a2
       
   113   3 b: b3
       
   114   3 b: b4
       
   115   $ hg fastannotate --debug -nf b
       
   116   fastannotate: b: cache broken and deleted
       
   117   fastannotate: b: 4 new changesets in the main branch
       
   118   1 a: b0
       
   119   0 b: b1
       
   120   2 a: a3
       
   121   $ hg fastannotate --debug -nf a
       
   122   fastannotate: a: using fast path (resolved fctx: True)
       
   123   0 a: a1
       
   124   1 b: a2
       
   125   3 b: b3
       
   126   3 b: b4
       
   127   $ hg fastannotate --debug -nf b
       
   128   fastannotate: b: using fast path (resolved fctx: True)
       
   129   1 a: b0
       
   130   0 b: b1
       
   131   2 a: a3
       
   132 
       
   133 list changeset hashes to improve readability
       
   134 
       
   135   $ hg log -T '{rev}:{node}\n'
       
   136   4:980e1ab8c516350172928fba95b49ede3b643dca
       
   137   3:14e123fedad9f491f5dde0beca2a767625a0a93a
       
   138   2:96495c41e4c12218766f78cdf244e768d7718b0f
       
   139   1:35c2b781234c994896aba36bd3245d3104e023df
       
   140   0:653e95416ebb5dbcc25bbc7f75568c9e01f7bd2f
       
   141 
       
   142 annotate a revision not in the linelog. linelog cannot be used, but does not get rebuilt either
       
   143 
       
   144   $ hg fastannotate --debug -nf a -r 96495c41e4c12218766f78cdf244e768d7718b0f
       
   145   fastannotate: a: linelog cannot help in annotating this revision
       
   146   1 a: b0
       
   147   0 b: b1
       
   148   2 a: a3
       
   149   $ hg fastannotate --debug -nf a -r 2
       
   150   fastannotate: a: linelog cannot help in annotating this revision
       
   151   1 a: b0
       
   152   0 b: b1
       
   153   2 a: a3
       
   154   $ hg fastannotate --debug -nf a -r .
       
   155   fastannotate: a: using fast path (resolved fctx: True)
       
   156   0 a: a1
       
   157   1 b: a2
       
   158   3 b: b3
       
   159   3 b: b4
       
   160 
       
   161 annotate an ancient revision where the path matches. linelog can be used
       
   162 
       
   163   $ hg fastannotate --debug -nf a -r 0
       
   164   fastannotate: a: using fast path (resolved fctx: True)
       
   165   0 a: a1
       
   166   $ hg fastannotate --debug -nf a -r 653e95416ebb5dbcc25bbc7f75568c9e01f7bd2f
       
   167   fastannotate: a: using fast path (resolved fctx: False)
       
   168   0 a: a1