tests/test-evolve-abort-orphan.t
changeset 3750 85ad555d6ff7
parent 3702 f6979d64b9fb
child 3794 b89108d3eca0
equal deleted inserted replaced
3749:44542ac10170 3750:85ad555d6ff7
       
     1 Tests for the --abort flag for `hg evolve` command while orphan resolution
       
     2 ==========================================================================
       
     3 
       
     4 The `--abort` flag aborts the interrupted evolve by undoing all the work which
       
     5 was done during resolution i.e. stripping new changesets created, moving
       
     6 bookmarks back, moving working directory back.
       
     7 
       
     8 This test contains cases when `hg evolve` is doing orphan resolution.
       
     9 
       
    10 Setup
       
    11 =====
       
    12 
       
    13   $ cat >> $HGRCPATH <<EOF
       
    14   > [phases]
       
    15   > publish = False
       
    16   > [alias]
       
    17   > glog = log -GT "{rev}:{node|short} {desc}\n ({bookmarks}) {phase}"
       
    18   > [extensions]
       
    19   > EOF
       
    20   $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
       
    21 
       
    22   $ hg init abortrepo
       
    23   $ cd abortrepo
       
    24   $ echo ".*\.orig" > .hgignore
       
    25   $ hg add .hgignore
       
    26   $ hg ci -m "added hgignore"
       
    27   $ for ch in a b c d; do echo foo > $ch; hg add $ch; hg ci -qm "added "$ch; done;
       
    28 
       
    29   $ hg glog
       
    30   @  4:c41c793e0ef1 added d
       
    31   |   () draft
       
    32   o  3:ca1b80f7960a added c
       
    33   |   () draft
       
    34   o  2:b1661037fa25 added b
       
    35   |   () draft
       
    36   o  1:c7586e2a9264 added a
       
    37   |   () draft
       
    38   o  0:8fa14d15e168 added hgignore
       
    39       () draft
       
    40 
       
    41 Testing --abort when no evolve is interrupted
       
    42 =============================================
       
    43 
       
    44   $ hg evolve --abort
       
    45   abort: no interrupted evolve to stop
       
    46   [255]
       
    47 
       
    48 Testing with wrong combination of flags
       
    49 =======================================
       
    50 
       
    51   $ hg evolve --abort --continue
       
    52   abort: cannot specify both "--abort" and "--continue"
       
    53   [255]
       
    54 
       
    55   $ hg evolve --abort --stop
       
    56   abort: cannot specify both "--abort" and "--stop"
       
    57   [255]
       
    58 
       
    59   $ hg evolve --abort --rev 3
       
    60   abort: cannot specify both "--rev" and "--abort"
       
    61   [255]
       
    62 
       
    63   $ hg evolve --abort --any
       
    64   abort: cannot specify both "--any" and "--abort"
       
    65   [255]
       
    66 
       
    67   $ hg evolve --abort --all
       
    68   abort: cannot specify both "--all" and "--abort"
       
    69   [255]
       
    70 
       
    71 Normal testingw when no rev was evolved
       
    72 ========================================
       
    73 
       
    74   $ hg prev
       
    75   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
    76   [3] added c
       
    77 
       
    78   $ echo babar > d
       
    79   $ hg add d
       
    80   $ hg amend
       
    81   1 new orphan changesets
       
    82 
       
    83   $ hg evolve --all
       
    84   move:[4] added d
       
    85   atop:[5] added c
       
    86   merging d
       
    87   warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
       
    88   evolve failed!
       
    89   fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
       
    90   abort: unresolved merge conflicts (see hg help resolve)
       
    91   [255]
       
    92 
       
    93   $ hg evolve --abort
       
    94   evolve aborted
       
    95   working directory is now at e93a9161a274
       
    96 
       
    97   $ hg glog
       
    98   @  5:e93a9161a274 added c
       
    99   |   () draft
       
   100   | *  4:c41c793e0ef1 added d
       
   101   | |   () draft
       
   102   | x  3:ca1b80f7960a added c
       
   103   |/    () draft
       
   104   o  2:b1661037fa25 added b
       
   105   |   () draft
       
   106   o  1:c7586e2a9264 added a
       
   107   |   () draft
       
   108   o  0:8fa14d15e168 added hgignore
       
   109       () draft
       
   110 
       
   111   $ hg diff
       
   112 
       
   113   $ hg status
       
   114 
       
   115 cleaning up things for next testing
       
   116 
       
   117   $ hg evolve --all
       
   118   move:[4] added d
       
   119   atop:[5] added c
       
   120   merging d
       
   121   warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
       
   122   evolve failed!
       
   123   fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
       
   124   abort: unresolved merge conflicts (see hg help resolve)
       
   125   [255]
       
   126   $ echo foo > d
       
   127   $ hg resolve -m
       
   128   (no more unresolved files)
       
   129   continue: hg evolve --continue
       
   130   $ hg evolve --continue
       
   131   evolving 4:c41c793e0ef1 "added d"
       
   132   working directory is now at e83de241f751
       
   133 
       
   134   $ hg up .^^^
       
   135   0 files updated, 0 files merged, 3 files removed, 0 files unresolved
       
   136 
       
   137 When there are evolved revisions but on a single branch
       
   138 =======================================================
       
   139 
       
   140   $ echo bar > c
       
   141   $ hg add c
       
   142   $ hg amend
       
   143   3 new orphan changesets
       
   144 
       
   145   $ hg evolve --all
       
   146   move:[2] added b
       
   147   atop:[7] added a
       
   148   move:[5] added c
       
   149   atop:[8] added b
       
   150   merging c
       
   151   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
   152   evolve failed!
       
   153   fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
       
   154   abort: unresolved merge conflicts (see hg help resolve)
       
   155   [255]
       
   156 
       
   157   $ hg glog
       
   158   @  8:0c41ec482070 added b
       
   159   |   () draft
       
   160   o  7:125af0ed8cae added a
       
   161   |   () draft
       
   162   | *  6:e83de241f751 added d
       
   163   | |   () draft
       
   164   | *  5:e93a9161a274 added c
       
   165   | |   () draft
       
   166   | x  2:b1661037fa25 added b
       
   167   | |   () draft
       
   168   | x  1:c7586e2a9264 added a
       
   169   |/    () draft
       
   170   o  0:8fa14d15e168 added hgignore
       
   171       () draft
       
   172 
       
   173   $ hg evolve --abort
       
   174   1 new orphan changesets
       
   175   evolve aborted
       
   176   working directory is now at 125af0ed8cae
       
   177 
       
   178   $ hg glog
       
   179   @  7:125af0ed8cae added a
       
   180   |   () draft
       
   181   | *  6:e83de241f751 added d
       
   182   | |   () draft
       
   183   | *  5:e93a9161a274 added c
       
   184   | |   () draft
       
   185   | *  2:b1661037fa25 added b
       
   186   | |   () draft
       
   187   | x  1:c7586e2a9264 added a
       
   188   |/    () draft
       
   189   o  0:8fa14d15e168 added hgignore
       
   190       () draft
       
   191 
       
   192   $ cd ..
       
   193 
       
   194 Testing when evolved revs are on multiple branches
       
   195 ==================================================
       
   196 
       
   197   $ hg init repotwo
       
   198   $ cd repotwo
       
   199   $ echo ".*\.orig" > .hgignore
       
   200   $ hg add .hgignore
       
   201   $ hg ci -m "added hgignore"
       
   202   $ echo a > a
       
   203   $ hg ci -Aqm "added a"
       
   204   $ for ch in b c; do echo $ch > $ch; hg add $ch; hg ci -m "added "$ch; done;
       
   205   $ hg up .^^
       
   206   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   207   $ for ch in c d; do echo $ ch > $ch; hg add $ch; hg ci -m "added "$ch; done;
       
   208   created new head
       
   209   $ hg up .^^
       
   210   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   211   $ echo foo > a
       
   212   $ hg ci -m "foo to a"
       
   213   created new head
       
   214 
       
   215   $ hg glog
       
   216   @  6:8f20d4390c21 foo to a
       
   217   |   () draft
       
   218   | o  5:bcb1c47f8520 added d
       
   219   | |   () draft
       
   220   | o  4:86d2603075a3 added c
       
   221   |/    () draft
       
   222   | o  3:17509928e5bf added c
       
   223   | |   () draft
       
   224   | o  2:9f0c80a55ddc added b
       
   225   |/    () draft
       
   226   o  1:2f913b0c9220 added a
       
   227   |   () draft
       
   228   o  0:8fa14d15e168 added hgignore
       
   229       () draft
       
   230 
       
   231   $ hg prev
       
   232   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   233   [1] added a
       
   234   $ echo aa > a
       
   235   $ hg amend
       
   236   5 new orphan changesets
       
   237 
       
   238   $ hg evolve --all
       
   239   move:[2] added b
       
   240   atop:[7] added a
       
   241   move:[4] added c
       
   242   atop:[7] added a
       
   243   move:[6] foo to a
       
   244   atop:[7] added a
       
   245   merging a
       
   246   warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
       
   247   evolve failed!
       
   248   fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
       
   249   abort: unresolved merge conflicts (see hg help resolve)
       
   250   [255]
       
   251 
       
   252   $ hg glog
       
   253   o  9:7f8e8bd9f0b6 added c
       
   254   |   () draft
       
   255   | o  8:db3b42ef4da7 added b
       
   256   |/    () draft
       
   257   @  7:807e8e2ca559 added a
       
   258   |   () draft
       
   259   | *  6:8f20d4390c21 foo to a
       
   260   | |   () draft
       
   261   | | *  5:bcb1c47f8520 added d
       
   262   | | |   () draft
       
   263   | | x  4:86d2603075a3 added c
       
   264   | |/    () draft
       
   265   | | *  3:17509928e5bf added c
       
   266   | | |   () draft
       
   267   | | x  2:9f0c80a55ddc added b
       
   268   | |/    () draft
       
   269   | x  1:2f913b0c9220 added a
       
   270   |/    () draft
       
   271   o  0:8fa14d15e168 added hgignore
       
   272       () draft
       
   273 
       
   274   $ hg evolve --abort
       
   275   2 new orphan changesets
       
   276   evolve aborted
       
   277   working directory is now at 807e8e2ca559
       
   278 
       
   279   $ hg glog
       
   280   @  7:807e8e2ca559 added a
       
   281   |   () draft
       
   282   | *  6:8f20d4390c21 foo to a
       
   283   | |   () draft
       
   284   | | *  5:bcb1c47f8520 added d
       
   285   | | |   () draft
       
   286   | | *  4:86d2603075a3 added c
       
   287   | |/    () draft
       
   288   | | *  3:17509928e5bf added c
       
   289   | | |   () draft
       
   290   | | *  2:9f0c80a55ddc added b
       
   291   | |/    () draft
       
   292   | x  1:2f913b0c9220 added a
       
   293   |/    () draft
       
   294   o  0:8fa14d15e168 added hgignore
       
   295       () draft
       
   296 
       
   297   $ hg status
       
   298 
       
   299   $ hg diff
       
   300 
       
   301 Testing when user created a new changesets on top of evolved revisions
       
   302 ======================================================================
       
   303 
       
   304   $ hg evolve --all
       
   305   move:[2] added b
       
   306   atop:[7] added a
       
   307   move:[4] added c
       
   308   atop:[7] added a
       
   309   move:[6] foo to a
       
   310   atop:[7] added a
       
   311   merging a
       
   312   warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
       
   313   evolve failed!
       
   314   fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
       
   315   abort: unresolved merge conflicts (see hg help resolve)
       
   316   [255]
       
   317   $ hg glog
       
   318   o  9:7f8e8bd9f0b6 added c
       
   319   |   () draft
       
   320   | o  8:db3b42ef4da7 added b
       
   321   |/    () draft
       
   322   @  7:807e8e2ca559 added a
       
   323   |   () draft
       
   324   | *  6:8f20d4390c21 foo to a
       
   325   | |   () draft
       
   326   | | *  5:bcb1c47f8520 added d
       
   327   | | |   () draft
       
   328   | | x  4:86d2603075a3 added c
       
   329   | |/    () draft
       
   330   | | *  3:17509928e5bf added c
       
   331   | | |   () draft
       
   332   | | x  2:9f0c80a55ddc added b
       
   333   | |/    () draft
       
   334   | x  1:2f913b0c9220 added a
       
   335   |/    () draft
       
   336   o  0:8fa14d15e168 added hgignore
       
   337       () draft
       
   338 
       
   339   $ echo foo > a
       
   340   $ hg resolve -m
       
   341   (no more unresolved files)
       
   342   continue: hg evolve --continue
       
   343 
       
   344   $ cd ..
       
   345   $ hg init clonerepo
       
   346   $ cd repotwo
       
   347   $ hg push ../clonerepo --force
       
   348   pushing to ../clonerepo
       
   349   searching for changes
       
   350   adding changesets
       
   351   adding manifests
       
   352   adding file changes
       
   353   added 10 changesets with 8 changes to 5 files (+4 heads)
       
   354   3 new obsolescence markers
       
   355   3 new orphan changesets
       
   356   $ cd ../clonerepo
       
   357   $ hg up 7f8e8bd9f0b6
       
   358   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   359   $ echo bar > bar
       
   360   $ hg add bar
       
   361   $ hg ci -m "made an new commit on evolved rev"
       
   362 
       
   363   $ hg push ../repotwo --force
       
   364   pushing to ../repotwo
       
   365   searching for changes
       
   366   adding changesets
       
   367   adding manifests
       
   368   adding file changes
       
   369   added 1 changesets with 1 changes to 1 files
       
   370   $ cd ../repotwo
       
   371   $ hg evolve --abort
       
   372   warning: new changesets detected on destination branch
       
   373   abort: unable to abort interrupted evolve, use 'hg evolve --stop' to stop evolve
       
   374   [255]
       
   375 
       
   376   $ hg evolve --stop
       
   377   stopped the interrupted evolve
       
   378   working directory is now at 807e8e2ca559
       
   379 
       
   380 Testing when the evolved revision turned public due to some other user actions
       
   381 ==============================================================================
       
   382 
       
   383   $ hg evolve --all
       
   384   move:[3] added c
       
   385   atop:[8] added b
       
   386   move:[5] added d
       
   387   atop:[9] added c
       
   388   move:[6] foo to a
       
   389   atop:[7] added a
       
   390   merging a
       
   391   warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
       
   392   evolve failed!
       
   393   fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
       
   394   abort: unresolved merge conflicts (see hg help resolve)
       
   395   [255]
       
   396 
       
   397   $ hg glog
       
   398   o  12:1c476940790a added d
       
   399   |   () draft
       
   400   | o  11:c10a55eb0cc6 added c
       
   401   | |   () draft
       
   402   +---o  10:48eca1ed5478 made an new commit on evolved rev
       
   403   | |     () draft
       
   404   o |  9:7f8e8bd9f0b6 added c
       
   405   | |   () draft
       
   406   | o  8:db3b42ef4da7 added b
       
   407   |/    () draft
       
   408   @  7:807e8e2ca559 added a
       
   409   |   () draft
       
   410   | *  6:8f20d4390c21 foo to a
       
   411   | |   () draft
       
   412   | x  1:2f913b0c9220 added a
       
   413   |/    () draft
       
   414   o  0:8fa14d15e168 added hgignore
       
   415       () draft
       
   416 
       
   417   $ hg phase -r 1c476940790a --public
       
   418 
       
   419   $ hg evolve --abort
       
   420   cannot clean up public changesets: 1c476940790a
       
   421   abort: unable to abort interrupted evolve, use 'hg evolve --stop' to stop evolve
       
   422   [255]
       
   423 
       
   424   $ hg evolve --stop
       
   425   stopped the interrupted evolve
       
   426   working directory is now at 807e8e2ca559
       
   427 
       
   428   $ cd ..
       
   429 
       
   430 Testing that bookmark should be moved back when doing `hg evolve --abort`
       
   431 =========================================================================
       
   432 
       
   433   $ hg init repothree
       
   434   $ cd repothree
       
   435   $ echo ".*\.orig" > .hgignore
       
   436   $ hg add .hgignore
       
   437   $ hg ci -m "added hgignore"
       
   438   $ for ch in a b c; do echo $ch > $ch; hg add $ch; hg ci -m "added "$ch; done;
       
   439 
       
   440   $ hg up .^
       
   441   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   442   $ hg bookmark bm1
       
   443   $ hg up .^
       
   444   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   445   (leaving bookmark bm1)
       
   446   $ echo foo > c
       
   447   $ hg add c
       
   448   $ hg amend
       
   449   2 new orphan changesets
       
   450 
       
   451   $ hg glog
       
   452   @  4:a0086c17bfc7 added a
       
   453   |   () draft
       
   454   | *  3:17509928e5bf added c
       
   455   | |   () draft
       
   456   | *  2:9f0c80a55ddc added b
       
   457   | |   (bm1) draft
       
   458   | x  1:2f913b0c9220 added a
       
   459   |/    () draft
       
   460   o  0:8fa14d15e168 added hgignore
       
   461       () draft
       
   462 
       
   463   $ hg evolve --all
       
   464   move:[2] added b
       
   465   atop:[4] added a
       
   466   move:[3] added c
       
   467   atop:[5] added b
       
   468   merging c
       
   469   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
   470   evolve failed!
       
   471   fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
       
   472   abort: unresolved merge conflicts (see hg help resolve)
       
   473   [255]
       
   474 
       
   475   $ hg glog
       
   476   @  5:c1f4718020e3 added b
       
   477   |   (bm1) draft
       
   478   o  4:a0086c17bfc7 added a
       
   479   |   () draft
       
   480   | *  3:17509928e5bf added c
       
   481   | |   () draft
       
   482   | x  2:9f0c80a55ddc added b
       
   483   | |   () draft
       
   484   | x  1:2f913b0c9220 added a
       
   485   |/    () draft
       
   486   o  0:8fa14d15e168 added hgignore
       
   487       () draft
       
   488 
       
   489   $ hg evolve --abort
       
   490   1 new orphan changesets
       
   491   evolve aborted
       
   492   working directory is now at a0086c17bfc7
       
   493 
       
   494   $ hg glog
       
   495   @  4:a0086c17bfc7 added a
       
   496   |   () draft
       
   497   | *  3:17509928e5bf added c
       
   498   | |   () draft
       
   499   | *  2:9f0c80a55ddc added b
       
   500   | |   (bm1) draft
       
   501   | x  1:2f913b0c9220 added a
       
   502   |/    () draft
       
   503   o  0:8fa14d15e168 added hgignore
       
   504       () draft