tests/test-inhibit.t
branchmercurial-4.3
changeset 3166 e1a230cc4527
parent 3127 cd90da787a44
parent 3160 f42a87cc864d
child 3167 f089741039e5
child 3176 1b58e0121689
equal deleted inserted replaced
3127:cd90da787a44 3166:e1a230cc4527
     1   $ cat >> $HGRCPATH <<EOF
       
     2   > [ui]
       
     3   > logtemplate = {rev}:{node|short} {desc}\n
       
     4   > [experimental]
       
     5   > prunestrip=True
       
     6   > evolution=createmarkers
       
     7   > [extensions]
       
     8   > rebase=
       
     9   > strip=
       
    10   > EOF
       
    11   $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
       
    12   $ echo "directaccess=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/hack/directaccess.py" >> $HGRCPATH
       
    13   $ echo "inhibit=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/hack/inhibit.py" >> $HGRCPATH
       
    14   $ mkcommit() {
       
    15   >    echo "$1" > "$1"
       
    16   >    hg add "$1"
       
    17   >    hg ci -m "add $1"
       
    18   > }
       
    19 
       
    20   $ hg init inhibit
       
    21   $ cd inhibit
       
    22   $ mkcommit cA
       
    23   $ mkcommit cB
       
    24   $ mkcommit cC
       
    25   $ mkcommit cD
       
    26   $ hg up 'desc(cA)'
       
    27   0 files updated, 0 files merged, 3 files removed, 0 files unresolved
       
    28   $ mkcommit cE
       
    29   created new head
       
    30   $ mkcommit cG
       
    31   $ mkcommit cH
       
    32   $ mkcommit cJ
       
    33   $ hg log -G
       
    34   @  7:18214586bf78 add cJ
       
    35   |
       
    36   o  6:cf5c4f4554ce add cH
       
    37   |
       
    38   o  5:5419eb264a33 add cG
       
    39   |
       
    40   o  4:98065434e5c6 add cE
       
    41   |
       
    42   | o  3:2db36d8066ff add cD
       
    43   | |
       
    44   | o  2:7df62a38b9bf add cC
       
    45   | |
       
    46   | o  1:02bcbc3f6e56 add cB
       
    47   |/
       
    48   o  0:54ccbc537fc2 add cA
       
    49   
       
    50 
       
    51 plain prune
       
    52 
       
    53   $ hg strip 1::
       
    54   3 changesets pruned
       
    55   $ hg log -G
       
    56   @  7:18214586bf78 add cJ
       
    57   |
       
    58   o  6:cf5c4f4554ce add cH
       
    59   |
       
    60   o  5:5419eb264a33 add cG
       
    61   |
       
    62   o  4:98065434e5c6 add cE
       
    63   |
       
    64   o  0:54ccbc537fc2 add cA
       
    65   
       
    66   $ hg debugobsinhibit --hidden 1::
       
    67   $ hg log -G
       
    68   @  7:18214586bf78 add cJ
       
    69   |
       
    70   o  6:cf5c4f4554ce add cH
       
    71   |
       
    72   o  5:5419eb264a33 add cG
       
    73   |
       
    74   o  4:98065434e5c6 add cE
       
    75   |
       
    76   | o  3:2db36d8066ff add cD
       
    77   | |
       
    78   | o  2:7df62a38b9bf add cC
       
    79   | |
       
    80   | o  1:02bcbc3f6e56 add cB
       
    81   |/
       
    82   o  0:54ccbc537fc2 add cA
       
    83   
       
    84   $ hg strip --hidden 1::
       
    85   3 changesets pruned
       
    86   $ hg log -G
       
    87   @  7:18214586bf78 add cJ
       
    88   |
       
    89   o  6:cf5c4f4554ce add cH
       
    90   |
       
    91   o  5:5419eb264a33 add cG
       
    92   |
       
    93   o  4:98065434e5c6 add cE
       
    94   |
       
    95   o  0:54ccbc537fc2 add cA
       
    96   
       
    97 
       
    98 after amend
       
    99 
       
   100   $ echo babar > cJ
       
   101   $ hg commit --amend
       
   102   $ hg log -G
       
   103   @  9:55c73a90e4b4 add cJ
       
   104   |
       
   105   o  6:cf5c4f4554ce add cH
       
   106   |
       
   107   o  5:5419eb264a33 add cG
       
   108   |
       
   109   o  4:98065434e5c6 add cE
       
   110   |
       
   111   o  0:54ccbc537fc2 add cA
       
   112   
       
   113   $ hg debugobsinhibit --hidden 18214586bf78
       
   114   $ hg log -G
       
   115   @  9:55c73a90e4b4 add cJ
       
   116   |
       
   117   | o  7:18214586bf78 add cJ
       
   118   |/
       
   119   o  6:cf5c4f4554ce add cH
       
   120   |
       
   121   o  5:5419eb264a33 add cG
       
   122   |
       
   123   o  4:98065434e5c6 add cE
       
   124   |
       
   125   o  0:54ccbc537fc2 add cA
       
   126   
       
   127 
       
   128 and no divergence
       
   129 
       
   130   $ hg summary
       
   131   parent: 9:55c73a90e4b4 tip
       
   132    add cJ
       
   133   branch: default
       
   134   commit: (clean)
       
   135   update: 1 new changesets, 2 branch heads (merge)
       
   136   phases: 6 draft
       
   137 
       
   138 check public revision got cleared
       
   139 (when adding the second inhibitor, the first one is removed because it is public)
       
   140 
       
   141   $ wc -m .hg/store/obsinhibit | sed -e 's/^[ \t]*//'
       
   142   20 .hg/store/obsinhibit
       
   143   $ hg strip 7
       
   144   1 changesets pruned
       
   145   $ hg debugobsinhibit --hidden 18214586bf78
       
   146   $ wc -m .hg/store/obsinhibit | sed -e 's/^[ \t]*//'
       
   147   20 .hg/store/obsinhibit
       
   148   $ hg log -G
       
   149   @  9:55c73a90e4b4 add cJ
       
   150   |
       
   151   | o  7:18214586bf78 add cJ
       
   152   |/
       
   153   o  6:cf5c4f4554ce add cH
       
   154   |
       
   155   o  5:5419eb264a33 add cG
       
   156   |
       
   157   o  4:98065434e5c6 add cE
       
   158   |
       
   159   o  0:54ccbc537fc2 add cA
       
   160   
       
   161   $ hg phase --public 7
       
   162   1 new bumped changesets
       
   163   $ hg strip 9
       
   164   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   165   working directory now at cf5c4f4554ce
       
   166   1 changesets pruned
       
   167   $ hg log -G
       
   168   o  7:18214586bf78 add cJ
       
   169   |
       
   170   @  6:cf5c4f4554ce add cH
       
   171   |
       
   172   o  5:5419eb264a33 add cG
       
   173   |
       
   174   o  4:98065434e5c6 add cE
       
   175   |
       
   176   o  0:54ccbc537fc2 add cA
       
   177   
       
   178   $ hg debugobsinhibit --hidden 55c73a90e4b4
       
   179   $ wc -m .hg/store/obsinhibit | sed -e 's/^[ \t]*//'
       
   180   20 .hg/store/obsinhibit
       
   181   $ hg log -G
       
   182   o  9:55c73a90e4b4 add cJ
       
   183   |
       
   184   | o  7:18214586bf78 add cJ
       
   185   |/
       
   186   @  6:cf5c4f4554ce add cH
       
   187   |
       
   188   o  5:5419eb264a33 add cG
       
   189   |
       
   190   o  4:98065434e5c6 add cE
       
   191   |
       
   192   o  0:54ccbc537fc2 add cA
       
   193   
       
   194 Update should inhibit all related unstable commits
       
   195 
       
   196   $ hg update 2 --hidden
       
   197   2 files updated, 0 files merged, 3 files removed, 0 files unresolved
       
   198   $ hg log -G
       
   199   o  9:55c73a90e4b4 add cJ
       
   200   |
       
   201   | o  7:18214586bf78 add cJ
       
   202   |/
       
   203   o  6:cf5c4f4554ce add cH
       
   204   |
       
   205   o  5:5419eb264a33 add cG
       
   206   |
       
   207   o  4:98065434e5c6 add cE
       
   208   |
       
   209   | @  2:7df62a38b9bf add cC
       
   210   | |
       
   211   | o  1:02bcbc3f6e56 add cB
       
   212   |/
       
   213   o  0:54ccbc537fc2 add cA
       
   214   
       
   215 
       
   216   $ hg update 9
       
   217   4 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   218   $ hg log -G
       
   219   @  9:55c73a90e4b4 add cJ
       
   220   |
       
   221   | o  7:18214586bf78 add cJ
       
   222   |/
       
   223   o  6:cf5c4f4554ce add cH
       
   224   |
       
   225   o  5:5419eb264a33 add cG
       
   226   |
       
   227   o  4:98065434e5c6 add cE
       
   228   |
       
   229   | o  2:7df62a38b9bf add cC
       
   230   | |
       
   231   | o  1:02bcbc3f6e56 add cB
       
   232   |/
       
   233   o  0:54ccbc537fc2 add cA
       
   234   
       
   235   $ hg strip --hidden 1::
       
   236   3 changesets pruned
       
   237   $ hg log -G
       
   238   @  9:55c73a90e4b4 add cJ
       
   239   |
       
   240   | o  7:18214586bf78 add cJ
       
   241   |/
       
   242   o  6:cf5c4f4554ce add cH
       
   243   |
       
   244   o  5:5419eb264a33 add cG
       
   245   |
       
   246   o  4:98065434e5c6 add cE
       
   247   |
       
   248   o  0:54ccbc537fc2 add cA
       
   249   
       
   250 
       
   251 Bookmark should inhibit all related unstable commits
       
   252   $ hg bookmark -r 2 book1  --hidden
       
   253   $ hg log -G
       
   254   @  9:55c73a90e4b4 add cJ
       
   255   |
       
   256   | o  7:18214586bf78 add cJ
       
   257   |/
       
   258   o  6:cf5c4f4554ce add cH
       
   259   |
       
   260   o  5:5419eb264a33 add cG
       
   261   |
       
   262   o  4:98065434e5c6 add cE
       
   263   |
       
   264   | o  2:7df62a38b9bf add cC
       
   265   | |
       
   266   | o  1:02bcbc3f6e56 add cB
       
   267   |/
       
   268   o  0:54ccbc537fc2 add cA
       
   269   
       
   270 
       
   271 Removing a bookmark with bookmark -D should prune the changes underneath
       
   272 that are not reachable from another bookmark or head
       
   273 
       
   274   $ hg bookmark -r 1 book2
       
   275   $ hg bookmark -D book1  --config experimental.evolution=createmarkers #--config to make sure prune is not registered as a command.
       
   276   bookmark 'book1' deleted
       
   277   1 changesets pruned
       
   278   $ hg log -G
       
   279   @  9:55c73a90e4b4 add cJ
       
   280   |
       
   281   | o  7:18214586bf78 add cJ
       
   282   |/
       
   283   o  6:cf5c4f4554ce add cH
       
   284   |
       
   285   o  5:5419eb264a33 add cG
       
   286   |
       
   287   o  4:98065434e5c6 add cE
       
   288   |
       
   289   | o  1:02bcbc3f6e56 add cB
       
   290   |/
       
   291   o  0:54ccbc537fc2 add cA
       
   292   
       
   293   $ hg bookmark -D book2
       
   294   bookmark 'book2' deleted
       
   295   1 changesets pruned
       
   296   $ hg log -G
       
   297   @  9:55c73a90e4b4 add cJ
       
   298   |
       
   299   | o  7:18214586bf78 add cJ
       
   300   |/
       
   301   o  6:cf5c4f4554ce add cH
       
   302   |
       
   303   o  5:5419eb264a33 add cG
       
   304   |
       
   305   o  4:98065434e5c6 add cE
       
   306   |
       
   307   o  0:54ccbc537fc2 add cA
       
   308   
       
   309 Test edge cases of bookmark -D
       
   310   $ hg book -D book2 -m hello
       
   311   abort: Cannot use both -m and -D
       
   312   [255]
       
   313 
       
   314   $ hg book -Draster-fix
       
   315   abort: Error, please check your command
       
   316   (make sure to put a space between -D and your bookmark name)
       
   317   [255]
       
   318 
       
   319 Test that direct access make changesets visible
       
   320 
       
   321   $ hg export 2db36d8066ff 02bcbc3f6e56
       
   322   # HG changeset patch
       
   323   # User test
       
   324   # Date 0 0
       
   325   #      Thu Jan 01 00:00:00 1970 +0000
       
   326   # Node ID 2db36d8066ff50e8be3d3e6c2da1ebc0a8381d82
       
   327   # Parent  7df62a38b9bf9daf968de235043ba88a8ef43393
       
   328   add cD
       
   329   
       
   330   diff -r 7df62a38b9bf -r 2db36d8066ff cD
       
   331   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   332   +++ b/cD	Thu Jan 01 00:00:00 1970 +0000
       
   333   @@ -0,0 +1,1 @@
       
   334   +cD
       
   335   # HG changeset patch
       
   336   # User test
       
   337   # Date 0 0
       
   338   #      Thu Jan 01 00:00:00 1970 +0000
       
   339   # Node ID 02bcbc3f6e56fb2928efec2c6e24472720bf5511
       
   340   # Parent  54ccbc537fc2d6845a5d61337c1cfb80d1d2815e
       
   341   add cB
       
   342   
       
   343   diff -r 54ccbc537fc2 -r 02bcbc3f6e56 cB
       
   344   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   345   +++ b/cB	Thu Jan 01 00:00:00 1970 +0000
       
   346   @@ -0,0 +1,1 @@
       
   347   +cB
       
   348 
       
   349 But only with hash
       
   350 
       
   351   $ hg export 2db36d8066ff::
       
   352   # HG changeset patch
       
   353   # User test
       
   354   # Date 0 0
       
   355   #      Thu Jan 01 00:00:00 1970 +0000
       
   356   # Node ID 2db36d8066ff50e8be3d3e6c2da1ebc0a8381d82
       
   357   # Parent  7df62a38b9bf9daf968de235043ba88a8ef43393
       
   358   add cD
       
   359   
       
   360   diff -r 7df62a38b9bf -r 2db36d8066ff cD
       
   361   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   362   +++ b/cD	Thu Jan 01 00:00:00 1970 +0000
       
   363   @@ -0,0 +1,1 @@
       
   364   +cD
       
   365 
       
   366   $ hg export 1 3
       
   367   abort: hidden revision '1'!
       
   368   (use --hidden to access hidden revisions; pruned)
       
   369   [255]
       
   370 
       
   371 
       
   372 Test directaccess in a larger revset
       
   373 
       
   374   $ hg log -r '. + .^ + 2db36d8066ff' -T '{node|short}\n'
       
   375   55c73a90e4b4
       
   376   cf5c4f4554ce
       
   377   2db36d8066ff
       
   378 
       
   379 Test directaccess only takes hashes
       
   380 
       
   381   $ HOOKPATH=$TESTTMP/printexplicitaccess.py
       
   382   $ cat >> $HOOKPATH <<EOF
       
   383   > def hook(ui, repo, **kwds):
       
   384   >     for i in sorted(repo._explicitaccess):
       
   385   >         ui.write('directaccess: %s\n' % i)
       
   386   > EOF
       
   387 
       
   388   $ hg log -r 1 -r 2 -r 2db36d8066f -T '{rev}\n' --config hooks.post-log=python:$HOOKPATH:hook
       
   389   1
       
   390   2
       
   391   3
       
   392   directaccess: 3
       
   393 
       
   394 With severals hidden sha, rebase of one hidden stack onto another one:
       
   395   $ hg update -C 0
       
   396   0 files updated, 0 files merged, 4 files removed, 0 files unresolved
       
   397   $ mkcommit cK
       
   398   created new head
       
   399   $ mkcommit cL
       
   400   $ hg update -C 9
       
   401   4 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   402   $ hg log -G
       
   403   o  11:53a94305e133 add cL
       
   404   |
       
   405   o  10:ad78ff7d621f add cK
       
   406   |
       
   407   | @  9:55c73a90e4b4 add cJ
       
   408   | |
       
   409   | | o  7:18214586bf78 add cJ
       
   410   | |/
       
   411   | o  6:cf5c4f4554ce add cH
       
   412   | |
       
   413   | o  5:5419eb264a33 add cG
       
   414   | |
       
   415   | o  4:98065434e5c6 add cE
       
   416   |/
       
   417   o  0:54ccbc537fc2 add cA
       
   418   
       
   419   $ hg strip --hidden 10:
       
   420   2 changesets pruned
       
   421   $ hg log -G
       
   422   @  9:55c73a90e4b4 add cJ
       
   423   |
       
   424   | o  7:18214586bf78 add cJ
       
   425   |/
       
   426   o  6:cf5c4f4554ce add cH
       
   427   |
       
   428   o  5:5419eb264a33 add cG
       
   429   |
       
   430   o  4:98065434e5c6 add cE
       
   431   |
       
   432   o  0:54ccbc537fc2 add cA
       
   433   
       
   434   $ hg rebase -s 10 -d 3 
       
   435   abort: hidden revision '3'!
       
   436   (use --hidden to access hidden revisions; pruned)
       
   437   [255]
       
   438   $ hg rebase -r ad78ff7d621f -r 53a94305e133 -d  2db36d8066ff --config experimental.rebaseskipobsolete=0
       
   439   Warning: accessing hidden changesets 2db36d8066ff for write operation
       
   440   Warning: accessing hidden changesets ad78ff7d621f,53a94305e133 for write operation
       
   441   rebasing 10:ad78ff7d621f "add cK"
       
   442   rebasing 11:53a94305e133 "add cL"
       
   443   $ hg log -G
       
   444   o  13:2f7b7704d714 add cL
       
   445   |
       
   446   o  12:fe1634cbe235 add cK
       
   447   |
       
   448   | @  9:55c73a90e4b4 add cJ
       
   449   | |
       
   450   | | o  7:18214586bf78 add cJ
       
   451   | |/
       
   452   | o  6:cf5c4f4554ce add cH
       
   453   | |
       
   454   | o  5:5419eb264a33 add cG
       
   455   | |
       
   456   | o  4:98065434e5c6 add cE
       
   457   | |
       
   458   o |  3:2db36d8066ff add cD
       
   459   | |
       
   460   o |  2:7df62a38b9bf add cC
       
   461   | |
       
   462   o |  1:02bcbc3f6e56 add cB
       
   463   |/
       
   464   o  0:54ccbc537fc2 add cA
       
   465   
       
   466 
       
   467 Check that amending in the middle of a stack does not show obsolete revs
       
   468 Since we are doing operation in the middle of the stack we cannot just
       
   469 have createmarkers as we are creating instability
       
   470 
       
   471   $ cat >> $HGRCPATH <<EOF
       
   472   > [experimental]
       
   473   > evolution=all
       
   474   > EOF
       
   475 
       
   476   $ hg strip --hidden 1::
       
   477   5 changesets pruned
       
   478   $ hg log -G
       
   479   @  9:55c73a90e4b4 add cJ
       
   480   |
       
   481   | o  7:18214586bf78 add cJ
       
   482   |/
       
   483   o  6:cf5c4f4554ce add cH
       
   484   |
       
   485   o  5:5419eb264a33 add cG
       
   486   |
       
   487   o  4:98065434e5c6 add cE
       
   488   |
       
   489   o  0:54ccbc537fc2 add cA
       
   490   
       
   491   $ hg up 7
       
   492   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   493   $ mkcommit cL
       
   494   $ mkcommit cM
       
   495   $ mkcommit cN
       
   496   $ hg log -G
       
   497   @  16:a438c045eb37 add cN
       
   498   |
       
   499   o  15:2d66e189f5b5 add cM
       
   500   |
       
   501   o  14:d66ccb8c5871 add cL
       
   502   |
       
   503   | o  9:55c73a90e4b4 add cJ
       
   504   | |
       
   505   o |  7:18214586bf78 add cJ
       
   506   |/
       
   507   o  6:cf5c4f4554ce add cH
       
   508   |
       
   509   o  5:5419eb264a33 add cG
       
   510   |
       
   511   o  4:98065434e5c6 add cE
       
   512   |
       
   513   o  0:54ccbc537fc2 add cA
       
   514   
       
   515   $ hg up 15
       
   516   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   517   $ echo "mmm" >> cM
       
   518   $ hg amend
       
   519   $ hg log -G
       
   520   @  18:210589181b14 add cM
       
   521   |
       
   522   | o  16:a438c045eb37 add cN
       
   523   | |
       
   524   | o  15:2d66e189f5b5 add cM
       
   525   |/
       
   526   o  14:d66ccb8c5871 add cL
       
   527   |
       
   528   | o  9:55c73a90e4b4 add cJ
       
   529   | |
       
   530   o |  7:18214586bf78 add cJ
       
   531   |/
       
   532   o  6:cf5c4f4554ce add cH
       
   533   |
       
   534   o  5:5419eb264a33 add cG
       
   535   |
       
   536   o  4:98065434e5c6 add cE
       
   537   |
       
   538   o  0:54ccbc537fc2 add cA
       
   539   
       
   540 Check that rebasing a commit twice makes the commit visible again
       
   541 
       
   542   $ hg rebase -d 18 -r 16 --keep
       
   543   rebasing 16:a438c045eb37 "add cN"
       
   544   $ hg log -r 14:: -G
       
   545   o  19:104eed5354c7 add cN
       
   546   |
       
   547   @  18:210589181b14 add cM
       
   548   |
       
   549   | o  16:a438c045eb37 add cN
       
   550   | |
       
   551   | o  15:2d66e189f5b5 add cM
       
   552   |/
       
   553   o  14:d66ccb8c5871 add cL
       
   554   |
       
   555   ~
       
   556   $ hg strip -r 210589181b14
       
   557   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   558   working directory now at d66ccb8c5871
       
   559   2 changesets pruned
       
   560 
       
   561 Using a hash prefix solely made of digits should work
       
   562   $ hg update 210589181
       
   563   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   564   $ hg rebase -d 18 -r 16 --keep
       
   565   rebasing 16:a438c045eb37 "add cN"
       
   566   $ hg log -r 14:: -G
       
   567   o  19:104eed5354c7 add cN
       
   568   |
       
   569   @  18:210589181b14 add cM
       
   570   |
       
   571   | o  16:a438c045eb37 add cN
       
   572   | |
       
   573   | o  15:2d66e189f5b5 add cM
       
   574   |/
       
   575   o  14:d66ccb8c5871 add cL
       
   576   |
       
   577   ~
       
   578 
       
   579 Test prunestrip
       
   580 
       
   581   $ hg book foo -r 104eed5354c7
       
   582   $ hg strip -r 210589181b14
       
   583   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   584   working directory now at d66ccb8c5871
       
   585   2 changesets pruned
       
   586   $ hg log -r 14:: -G -T '{rev}:{node|short} {desc|firstline} {bookmarks}\n'
       
   587   o  16:a438c045eb37 add cN
       
   588   |
       
   589   o  15:2d66e189f5b5 add cM
       
   590   |
       
   591   @  14:d66ccb8c5871 add cL foo
       
   592   |
       
   593   ~
       
   594 
       
   595 Check that --hidden used with inhibit does not hide every obsolete commit
       
   596 We show the log before and after a log -G --hidden, they should be the same
       
   597   $ hg log -G
       
   598   o  16:a438c045eb37 add cN
       
   599   |
       
   600   o  15:2d66e189f5b5 add cM
       
   601   |
       
   602   @  14:d66ccb8c5871 add cL
       
   603   |
       
   604   | o  9:55c73a90e4b4 add cJ
       
   605   | |
       
   606   o |  7:18214586bf78 add cJ
       
   607   |/
       
   608   o  6:cf5c4f4554ce add cH
       
   609   |
       
   610   o  5:5419eb264a33 add cG
       
   611   |
       
   612   o  4:98065434e5c6 add cE
       
   613   |
       
   614   o  0:54ccbc537fc2 add cA
       
   615   
       
   616   $ hg log -G --hidden
       
   617   x  19:104eed5354c7 add cN
       
   618   |
       
   619   x  18:210589181b14 add cM
       
   620   |
       
   621   | x  17:b3c3274523f9 temporary amend commit for 2d66e189f5b5
       
   622   | |
       
   623   | | o  16:a438c045eb37 add cN
       
   624   | |/
       
   625   | o  15:2d66e189f5b5 add cM
       
   626   |/
       
   627   @  14:d66ccb8c5871 add cL
       
   628   |
       
   629   | x  13:2f7b7704d714 add cL
       
   630   | |
       
   631   | x  12:fe1634cbe235 add cK
       
   632   | |
       
   633   | | x  11:53a94305e133 add cL
       
   634   | | |
       
   635   | | x  10:ad78ff7d621f add cK
       
   636   | | |
       
   637   | | | o  9:55c73a90e4b4 add cJ
       
   638   | | | |
       
   639   +-------x  8:e84f73d9ad36 temporary amend commit for 18214586bf78
       
   640   | | | |
       
   641   o-----+  7:18214586bf78 add cJ
       
   642    / / /
       
   643   | | o  6:cf5c4f4554ce add cH
       
   644   | | |
       
   645   | | o  5:5419eb264a33 add cG
       
   646   | | |
       
   647   | | o  4:98065434e5c6 add cE
       
   648   | |/
       
   649   x |  3:2db36d8066ff add cD
       
   650   | |
       
   651   x |  2:7df62a38b9bf add cC
       
   652   | |
       
   653   x |  1:02bcbc3f6e56 add cB
       
   654   |/
       
   655   o  0:54ccbc537fc2 add cA
       
   656   
       
   657 
       
   658   $ hg log -G
       
   659   o  16:a438c045eb37 add cN
       
   660   |
       
   661   o  15:2d66e189f5b5 add cM
       
   662   |
       
   663   @  14:d66ccb8c5871 add cL
       
   664   |
       
   665   | o  9:55c73a90e4b4 add cJ
       
   666   | |
       
   667   o |  7:18214586bf78 add cJ
       
   668   |/
       
   669   o  6:cf5c4f4554ce add cH
       
   670   |
       
   671   o  5:5419eb264a33 add cG
       
   672   |
       
   673   o  4:98065434e5c6 add cE
       
   674   |
       
   675   o  0:54ccbc537fc2 add cA
       
   676   
       
   677  
       
   678 check that pruning and inhibited node does not confuse anything
       
   679 
       
   680   $ hg up --hidden 210589181b14
       
   681   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   682   $ hg strip --bundle 210589181b14
       
   683   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   684   saved backup bundle to $TESTTMP/inhibit/.hg/strip-backup/210589181b14-e09c7b88-backup.hg (glob)
       
   685   $ hg unbundle .hg/strip-backup/210589181b14-e09c7b88-backup.hg # restore state
       
   686   adding changesets
       
   687   adding manifests
       
   688   adding file changes
       
   689   added 2 changesets with 1 changes to 2 files (+1 heads)
       
   690   3 new obsolescence markers
       
   691   obsoleted 1 changesets
       
   692   (run 'hg heads .' to see heads, 'hg merge' to merge)
       
   693 
       
   694  Only allow direct access and check that evolve works like before
       
   695 (also disable evolve commands to avoid hint about using evolve)
       
   696   $ cat >> $HGRCPATH <<EOF
       
   697   > [extensions]
       
   698   > inhibit=!
       
   699   > [experimental]
       
   700   > evolution=createmarkers
       
   701   > EOF
       
   702 
       
   703   $ hg up 15
       
   704   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   705   working directory parent is obsolete! (2d66e189f5b5)
       
   706   $ cat >> $HGRCPATH <<EOF
       
   707   > [experimental]
       
   708   > evolution=all
       
   709   > EOF
       
   710   $ echo "CM" > cM
       
   711   $ hg amend
       
   712   $ hg log -G
       
   713   @  21:721c3c279519 add cM
       
   714   |
       
   715   | o  16:a438c045eb37 add cN
       
   716   | |
       
   717   | x  15:2d66e189f5b5 add cM
       
   718   |/
       
   719   o  14:d66ccb8c5871 add cL
       
   720   |
       
   721   o  7:18214586bf78 add cJ
       
   722   |
       
   723   o  6:cf5c4f4554ce add cH
       
   724   |
       
   725   o  5:5419eb264a33 add cG
       
   726   |
       
   727   o  4:98065434e5c6 add cE
       
   728   |
       
   729   o  0:54ccbc537fc2 add cA
       
   730   
       
   731   $ cat >> $HGRCPATH <<EOF
       
   732   > [extensions]
       
   733   > EOF
       
   734   $ echo "inhibit=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/hack/inhibit.py" >> $HGRCPATH
       
   735 
       
   736 Empty commit
       
   737   $ hg amend
       
   738   nothing changed
       
   739   [1]
       
   740 
       
   741 Check that the behavior of rebase with obsolescence markers is maintained
       
   742 despite inhibit
       
   743 
       
   744   $ hg up a438c045eb37
       
   745   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   746   $ hg rebase -r 15:: -d 21 --config experimental.rebaseskipobsolete=True
       
   747   note: not rebasing 15:2d66e189f5b5 "add cM", already in destination as 21:721c3c279519 "add cM"
       
   748   rebasing 16:a438c045eb37 "add cN"
       
   749   $ hg up -q 2d66e189f5b5 # To inhibit it as the rest of test depends on it
       
   750   $ hg up -q 21
       
   751 
       
   752 Directaccess should load after some extensions precised in the conf
       
   753 With no extension specified:
       
   754 
       
   755   $ cat >$TESTTMP/test_extension.py  << EOF
       
   756   > from mercurial import extensions
       
   757   > def uisetup(ui):
       
   758   >   print extensions._order
       
   759   > EOF
       
   760   $ cat >> $HGRCPATH << EOF
       
   761   > [extensions]
       
   762   > testextension=$TESTTMP/test_extension.py
       
   763   > EOF
       
   764   $ hg id
       
   765   ['rebase', 'strip', 'evolve', 'directaccess', 'inhibit', 'testextension']
       
   766   721c3c279519
       
   767 
       
   768 With test_extension specified:
       
   769   $ cat >> $HGRCPATH << EOF
       
   770   > [directaccess]
       
   771   > loadsafter=testextension
       
   772   > EOF
       
   773   $ hg id
       
   774   ['rebase', 'strip', 'evolve', 'inhibit', 'testextension', 'directaccess']
       
   775   721c3c279519
       
   776 
       
   777 Inhibit should not work without directaccess
       
   778   $ cat >> $HGRCPATH <<EOF
       
   779   > [extensions]
       
   780   > directaccess=!
       
   781   > testextension=!
       
   782   > EOF
       
   783   $ hg up .
       
   784   cannot use inhibit without the direct access extension
       
   785   (please enable it or inhibit won't work)
       
   786   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   787   $ echo "directaccess=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/hack/directaccess.py" >> $HGRCPATH
       
   788   $ cd ..
       
   789 
       
   790 hg push should not allow directaccess unless forced with --hidden
       
   791 We copy the inhibhit repo to inhibit2 and make some changes to push to inhibit
       
   792 
       
   793   $ cp -r inhibit inhibit2
       
   794   $ pwd=$(pwd)
       
   795   $ cd inhibit
       
   796   $ mkcommit pk
       
   797   created new head
       
   798   $ hg id
       
   799   003a4735afde tip
       
   800   $ echo "OO" > pk
       
   801   $ hg amend
       
   802   $ hg id
       
   803   71eb4f100663 tip
       
   804 
       
   805 Hidden commits cannot be pushed without --hidden
       
   806   $ hg push -r 003a4735afde $pwd/inhibit2
       
   807   pushing to $TESTTMP/inhibit2
       
   808   abort: hidden revision '003a4735afde'!
       
   809   (use --hidden to access hidden revisions; successor: 71eb4f100663)
       
   810   [255]
       
   811 
       
   812 Visible commits can still be pushed
       
   813   $ hg push -fr 71eb4f100663 $pwd/inhibit2
       
   814   pushing to $TESTTMP/inhibit2
       
   815   searching for changes
       
   816   adding changesets
       
   817   adding manifests
       
   818   adding file changes
       
   819   added 1 changesets with 1 changes to 1 files (+1 heads)
       
   820   2 new obsolescence markers
       
   821 
       
   822 Create a stack (obsolete with successor in dest) -> (not obsolete) and rebase
       
   823 it. We expect to not see the stack at the end of the rebase.
       
   824   $ hg log -G  -r "25::"
       
   825   @  25:71eb4f100663 add pk
       
   826   |
       
   827   ~
       
   828   $ hg up -C 22
       
   829   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   830   $ mkcommit Dk
       
   831   $ hg prune 22 -s 25
       
   832   1 changesets pruned
       
   833   $ hg rebase -s 22 -d 25 --config experimental.rebaseskipobsolete=True
       
   834   note: not rebasing 22:46cb6daad392 "add cN", already in destination as 25:71eb4f100663 "add pk"
       
   835   rebasing 26:7ad60e760c7b "add Dk" (tip)
       
   836   $ hg log -G  -r "25::"
       
   837   @  27:1192fa9fbc68 add Dk
       
   838   |
       
   839   o  25:71eb4f100663 add pk
       
   840   |
       
   841   ~
       
   842 
       
   843 Create a stack (obsolete with succ in dest) -> (not obsolete) -> (not obsolete).
       
   844 Rebase the first two revs of the stack onto dest, we expect to see one new
       
   845 revision on the destination and everything visible.
       
   846   $ hg up 25
       
   847   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   848   $ mkcommit Dl
       
   849   created new head
       
   850   $ mkcommit Dp
       
   851   $ mkcommit Do
       
   852   $ hg log -G -r "25::"
       
   853   @  30:b517facce1ef add Do
       
   854   |
       
   855   o  29:c5a47ab27c2e add Dp
       
   856   |
       
   857   o  28:8c1c2edbaf1b add Dl
       
   858   |
       
   859   | o  27:1192fa9fbc68 add Dk
       
   860   |/
       
   861   o  25:71eb4f100663 add pk
       
   862   |
       
   863   ~
       
   864   $ hg prune 28 -s 27
       
   865   1 changesets pruned
       
   866   $ hg up 25
       
   867   0 files updated, 0 files merged, 3 files removed, 0 files unresolved
       
   868   $ hg rebase -r "28 + 29" --keep -d 27 --config experimental.rebaseskipobsolete=True
       
   869   note: not rebasing 28:8c1c2edbaf1b "add Dl", already in destination as 27:1192fa9fbc68 "add Dk"
       
   870   rebasing 29:c5a47ab27c2e "add Dp"
       
   871   $ hg log -G  -r "25::"
       
   872   o  31:7d8affb1f604 add Dp
       
   873   |
       
   874   | o  30:b517facce1ef add Do
       
   875   | |
       
   876   | o  29:c5a47ab27c2e add Dp
       
   877   | |
       
   878   | o  28:8c1c2edbaf1b add Dl
       
   879   | |
       
   880   o |  27:1192fa9fbc68 add Dk
       
   881   |/
       
   882   @  25:71eb4f100663 add pk
       
   883   |
       
   884   ~
       
   885 
       
   886 Rebase the same stack in full on the destination, we expect it to disappear
       
   887 and only see the top revision added to destination. We don\'t expect 29 to be
       
   888 skipped as we used --keep before.
       
   889   $ hg rebase -s 28 -d 27 --config experimental.rebaseskipobsolete=True
       
   890   note: not rebasing 28:8c1c2edbaf1b "add Dl", already in destination as 27:1192fa9fbc68 "add Dk"
       
   891   rebasing 29:c5a47ab27c2e "add Dp"
       
   892   rebasing 30:b517facce1ef "add Do"
       
   893   $ hg log -G  -r "25::"
       
   894   o  32:1d43fff9e26f add Do
       
   895   |
       
   896   o  31:7d8affb1f604 add Dp
       
   897   |
       
   898   o  27:1192fa9fbc68 add Dk
       
   899   |
       
   900   @  25:71eb4f100663 add pk
       
   901   |
       
   902   ~
       
   903 
       
   904 Pulling from a inhibit repo to a non-inhibit repo should work
       
   905 
       
   906   $ cd ..
       
   907   $ hg clone -q inhibit not-inhibit
       
   908   $ cat >> not-inhibit/.hg/hgrc <<EOF
       
   909   > [extensions]
       
   910   > inhibit=!
       
   911   > directaccess=!
       
   912   > evolve=!
       
   913   > EOF
       
   914   $ cd not-inhibit
       
   915   $ hg book -d foo
       
   916   $ hg pull
       
   917   pulling from $TESTTMP/inhibit (glob)
       
   918   searching for changes
       
   919   no changes found
       
   920   adding remote bookmark foo
       
   921 
       
   922 Test that bookmark -D can take multiple branch names
       
   923   $ cd ../inhibit
       
   924   $ hg bookmark book2 book1 book3
       
   925   $ touch foo && hg add foo && hg ci -m "add foo"
       
   926   created new head
       
   927   $ hg up book1
       
   928   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   929   (activating bookmark book1)
       
   930   $ hg bookmark -D book2 book3
       
   931   bookmark 'book2' deleted
       
   932   bookmark 'book3' deleted
       
   933   1 changesets pruned