tests/test-branches-obsolete.t
changeset 51522 5f9350956c03
child 51528 88b0e07dd2cd
equal deleted inserted replaced
51521:0d4a6ab3c8da 51522:5f9350956c03
       
     1 ================================================================
       
     2 test the interaction of the branch cache with obsolete changeset
       
     3 ================================================================
       
     4 
       
     5 Some corner case have been covered by unrelated test (like rebase ones) this
       
     6 file meant to gather explicite testing of those.
       
     7 
       
     8 See also: test-obsolete-checkheads.t
       
     9 
       
    10 #testcases v2 v3
       
    11 
       
    12   $ cat >> $HGRCPATH << EOF
       
    13   > [phases]
       
    14   > publish = false
       
    15   > [experimental]
       
    16   > evolution = all
       
    17   > server.allow-hidden-access = *
       
    18   > EOF
       
    19 
       
    20 #if v3
       
    21   $ cat <<EOF >> $HGRCPATH
       
    22   > [experimental]
       
    23   > branch-cache-v3=yes
       
    24   > EOF
       
    25 #else
       
    26   $ cat <<EOF >> $HGRCPATH
       
    27   > [experimental]
       
    28   > branch-cache-v3=no
       
    29   > EOF
       
    30 #endif
       
    31 
       
    32 Setup graph
       
    33 #############
       
    34 
       
    35   $ . $RUNTESTDIR/testlib/common.sh
       
    36 
       
    37 graph with a single branch
       
    38 --------------------------
       
    39 
       
    40 We want some branching and some obsolescence
       
    41 
       
    42   $ hg init main-single-branch
       
    43   $ cd main-single-branch
       
    44   $ mkcommit root
       
    45   $ mkcommit A_1
       
    46   $ mkcommit A_2
       
    47   $ hg update 'desc("A_2")' --quiet
       
    48   $ mkcommit B_1
       
    49   $ mkcommit B_2
       
    50   $ mkcommit B_3
       
    51   $ mkcommit B_4
       
    52   $ hg update 'desc("A_2")' --quiet
       
    53   $ mkcommit A_3
       
    54   created new head
       
    55   $ mkcommit A_4
       
    56   $ hg up null --quiet
       
    57   $ hg clone --noupdate . ../main-single-branch-pre-ops
       
    58   $ hg log -r 'desc("A_1")' -T '{node}' > ../main-single-branch-node_A1
       
    59   $ hg log -r 'desc("A_2")' -T '{node}' > ../main-single-branch-node_A2
       
    60   $ hg log -r 'desc("A_3")' -T '{node}' > ../main-single-branch-node_A3
       
    61   $ hg log -r 'desc("A_4")' -T '{node}' > ../main-single-branch-node_A4
       
    62   $ hg log -r 'desc("B_1")' -T '{node}' > ../main-single-branch-node_B1
       
    63   $ hg log -r 'desc("B_2")' -T '{node}' > ../main-single-branch-node_B2
       
    64   $ hg log -r 'desc("B_3")' -T '{node}' > ../main-single-branch-node_B3
       
    65   $ hg log -r 'desc("B_4")' -T '{node}' > ../main-single-branch-node_B4
       
    66 
       
    67 (double check the heads are right before we obsolete)
       
    68 
       
    69   $ hg log -R ../main-single-branch-pre-ops -G -T '{desc}\n'
       
    70   o  A_4
       
    71   |
       
    72   o  A_3
       
    73   |
       
    74   | o  B_4
       
    75   | |
       
    76   | o  B_3
       
    77   | |
       
    78   | o  B_2
       
    79   | |
       
    80   | o  B_1
       
    81   |/
       
    82   o  A_2
       
    83   |
       
    84   o  A_1
       
    85   |
       
    86   o  root
       
    87   
       
    88   $ hg log -G -T '{desc}\n'
       
    89   o  A_4
       
    90   |
       
    91   o  A_3
       
    92   |
       
    93   | o  B_4
       
    94   | |
       
    95   | o  B_3
       
    96   | |
       
    97   | o  B_2
       
    98   | |
       
    99   | o  B_1
       
   100   |/
       
   101   o  A_2
       
   102   |
       
   103   o  A_1
       
   104   |
       
   105   o  root
       
   106   
       
   107   $ hg log -T '{desc}\n' --rev 'head()'
       
   108   B_4
       
   109   A_4
       
   110 
       
   111 Absolete a couple of changes
       
   112 
       
   113   $ for d in B2 B3 B4 A4; do
       
   114   >   hg debugobsolete --record-parents `cat ../main-single-branch-node_$d`;
       
   115   > done
       
   116   1 new obsolescence markers
       
   117   obsoleted 1 changesets
       
   118   2 new orphan changesets
       
   119   1 new obsolescence markers
       
   120   obsoleted 1 changesets
       
   121   1 new obsolescence markers
       
   122   obsoleted 1 changesets
       
   123   1 new obsolescence markers
       
   124   obsoleted 1 changesets
       
   125 
       
   126 (double check the result is okay)
       
   127 
       
   128   $ hg log -G -T '{desc}\n'
       
   129   o  A_3
       
   130   |
       
   131   | o  B_1
       
   132   |/
       
   133   o  A_2
       
   134   |
       
   135   o  A_1
       
   136   |
       
   137   o  root
       
   138   
       
   139   $ hg heads -T '{desc}\n'
       
   140   A_3
       
   141   B_1
       
   142   $ cd ..
       
   143 
       
   144 
       
   145 Actual testing
       
   146 ##############
       
   147 
       
   148 Revealing obsolete changeset
       
   149 ----------------------------
       
   150 
       
   151 Check that revealing obsolete changesets does not confuse branch computation and checks
       
   152 
       
   153 Revealing tipmost changeset
       
   154 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   155 
       
   156 
       
   157   $ cp -R ./main-single-branch tmp-repo
       
   158   $ cd tmp-repo
       
   159   $ hg update --hidden --rev 'desc("A_4")' --quiet
       
   160   updated to hidden changeset 3d808bbc9440
       
   161   (hidden revision '3d808bbc9440' is pruned)
       
   162   $ hg log -G -T '{desc}\n'
       
   163   @  A_4
       
   164   |
       
   165   o  A_3
       
   166   |
       
   167   | o  B_1
       
   168   |/
       
   169   o  A_2
       
   170   |
       
   171   o  A_1
       
   172   |
       
   173   o  root
       
   174   
       
   175   $ hg heads -T '{desc}\n'
       
   176   A_3
       
   177   B_1
       
   178 
       
   179 Even when computing branches from scratch
       
   180 
       
   181   $ rm -rf .hg/cache/branch*
       
   182   $ rm -rf .hg/wcache/branch*
       
   183   $ hg heads -T '{desc}\n'
       
   184   A_3
       
   185   B_1
       
   186 
       
   187 And we can get back to normal
       
   188 
       
   189   $ hg update null --quiet
       
   190   $ hg heads -T '{desc}\n'
       
   191   A_3
       
   192   B_1
       
   193 
       
   194   $ cd ..
       
   195   $ rm -rf tmp-repo
       
   196 
       
   197 Revealing  changeset in the middle of the changelog
       
   198 ~~~~~~~~~~~~~~~~~~~~~~~~~~~------------------------
       
   199 
       
   200 Check that revealing an obsolete changeset does not confuse branch computation and checks
       
   201 
       
   202   $ cp -R ./main-single-branch tmp-repo
       
   203   $ cd tmp-repo
       
   204   $ hg update --hidden --rev 'desc("B_3")' --quiet
       
   205   updated to hidden changeset 9c996d7674bb
       
   206   (hidden revision '9c996d7674bb' is pruned)
       
   207   $ hg log -G -T '{desc}\n'
       
   208   o  A_3
       
   209   |
       
   210   | @  B_3
       
   211   | |
       
   212   | x  B_2
       
   213   | |
       
   214   | o  B_1
       
   215   |/
       
   216   o  A_2
       
   217   |
       
   218   o  A_1
       
   219   |
       
   220   o  root
       
   221   
       
   222   $ hg heads -T '{desc}\n'
       
   223   A_3
       
   224   B_1
       
   225 
       
   226 Even when computing branches from scratch
       
   227 
       
   228   $ rm -rf .hg/cache/branch*
       
   229   $ rm -rf .hg/wcache/branch*
       
   230   $ hg heads -T '{desc}\n'
       
   231   A_3
       
   232   B_1
       
   233 
       
   234 And we can get back to normal
       
   235 
       
   236   $ hg update null --quiet
       
   237   $ hg heads -T '{desc}\n'
       
   238   A_3
       
   239   B_1
       
   240 
       
   241   $ cd ..
       
   242   $ rm -rf tmp-repo
       
   243 
       
   244 Getting the obsolescence marker after the fact for the tip rev
       
   245 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   246 
       
   247   $ cp -R ./main-single-branch-pre-ops tmp-repo
       
   248   $ cd tmp-repo
       
   249   $ hg update --hidden --rev 'desc("A_4")' --quiet
       
   250   $ hg log -G -T '{desc}\n'
       
   251   @  A_4
       
   252   |
       
   253   o  A_3
       
   254   |
       
   255   | o  B_4
       
   256   | |
       
   257   | o  B_3
       
   258   | |
       
   259   | o  B_2
       
   260   | |
       
   261   | o  B_1
       
   262   |/
       
   263   o  A_2
       
   264   |
       
   265   o  A_1
       
   266   |
       
   267   o  root
       
   268   
       
   269   $ hg heads -T '{desc}\n'
       
   270   A_4
       
   271   B_4
       
   272   $ hg pull --rev `cat ../main-single-branch-node_A4` --remote-hidden
       
   273   pulling from $TESTTMP/main-single-branch
       
   274   no changes found
       
   275   1 new obsolescence markers
       
   276   obsoleted 1 changesets
       
   277 
       
   278 branch head are okay
       
   279 
       
   280   $ hg heads -T '{desc}\n'
       
   281   A_3
       
   282   B_4
       
   283 
       
   284 Even when computing branches from scratch
       
   285 
       
   286   $ rm -rf .hg/cache/branch*
       
   287   $ rm -rf .hg/wcache/branch*
       
   288   $ hg heads -T '{desc}\n'
       
   289   A_3
       
   290   B_4
       
   291 
       
   292 And we can get back to normal
       
   293 
       
   294   $ hg update null --quiet
       
   295   $ hg heads -T '{desc}\n'
       
   296   A_3
       
   297   B_4
       
   298 
       
   299   $ cd ..
       
   300   $ rm -rf tmp-repo
       
   301 
       
   302 Getting the obsolescence marker after the fact for another rev
       
   303 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   304 
       
   305   $ cp -R ./main-single-branch-pre-ops tmp-repo
       
   306   $ cd tmp-repo
       
   307   $ hg update --hidden --rev 'desc("B_3")' --quiet
       
   308   $ hg log -G -T '{desc}\n'
       
   309   o  A_4
       
   310   |
       
   311   o  A_3
       
   312   |
       
   313   | o  B_4
       
   314   | |
       
   315   | @  B_3
       
   316   | |
       
   317   | o  B_2
       
   318   | |
       
   319   | o  B_1
       
   320   |/
       
   321   o  A_2
       
   322   |
       
   323   o  A_1
       
   324   |
       
   325   o  root
       
   326   
       
   327   $ hg heads -T '{desc}\n'
       
   328   A_4
       
   329   B_4
       
   330   $ hg pull --rev `cat ../main-single-branch-node_B4` --remote-hidden
       
   331   pulling from $TESTTMP/main-single-branch
       
   332   no changes found
       
   333   3 new obsolescence markers
       
   334   obsoleted 3 changesets
       
   335 
       
   336 branch head are okay
       
   337 
       
   338   $ hg heads -T '{desc}\n'
       
   339   A_4
       
   340   B_1
       
   341 
       
   342 Even when computing branches from scratch
       
   343 
       
   344   $ rm -rf .hg/cache/branch*
       
   345   $ rm -rf .hg/wcache/branch*
       
   346   $ hg heads -T '{desc}\n'
       
   347   A_4
       
   348   B_1
       
   349 
       
   350 And we can get back to normal
       
   351 
       
   352   $ hg update null --quiet
       
   353   $ hg heads -T '{desc}\n'
       
   354   A_4
       
   355   B_1
       
   356 
       
   357   $ cd ..
       
   358   $ rm -rf tmp-repo