tests/test-evolve-stop-orphan.t
branchmercurial-4.4
changeset 3817 5ca297e78f2c
parent 3714 19ec729f3ca2
parent 3731 83dc216b9e9a
child 3818 f8677cb11dcb
child 3930 d00f0c369bc7
equal deleted inserted replaced
3723:e70ad3983872 3817:5ca297e78f2c
       
     1 Tests for the --stop flag for `hg evolve` command while resolving orphans
       
     2 =========================================================================
       
     3 
       
     4 The `--stop` flag stops the interrupted evolution and delete the state file so
       
     5 user can do other things and comeback and do evolution later on
       
     6 
       
     7 This is testing cases when `hg evolve` command is doing orphan resolution.
       
     8 
       
     9 Setup
       
    10 =====
       
    11 
       
    12   $ cat >> $HGRCPATH <<EOF
       
    13   > [alias]
       
    14   > glog = log -GT "{rev}:{node|short} {desc}\n ({bookmarks}) {phase}"
       
    15   > [extensions]
       
    16   > EOF
       
    17   $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
       
    18 
       
    19   $ hg init stoprepo
       
    20   $ cd stoprepo
       
    21   $ echo ".*\.orig" > .hgignore
       
    22   $ hg add .hgignore
       
    23   $ hg ci -m "added hgignore"
       
    24   $ for ch in a b c d; do echo foo > $ch; hg add $ch; hg ci -qm "added "$ch; done;
       
    25 
       
    26   $ hg glog
       
    27   @  4:c41c793e0ef1 added d
       
    28   |   () draft
       
    29   o  3:ca1b80f7960a added c
       
    30   |   () draft
       
    31   o  2:b1661037fa25 added b
       
    32   |   () draft
       
    33   o  1:c7586e2a9264 added a
       
    34   |   () draft
       
    35   o  0:8fa14d15e168 added hgignore
       
    36       () draft
       
    37 
       
    38 Testing `--stop` when no evolve is interrupted
       
    39 ==============================================
       
    40 
       
    41   $ hg evolve --stop
       
    42   abort: no interrupted evolve to stop
       
    43   [255]
       
    44 
       
    45 Testing with wrong combinations of flags
       
    46 ========================================
       
    47 
       
    48   $ hg evolve --stop --rev 1
       
    49   abort: cannot specify both "--rev" and "--stop"
       
    50   [255]
       
    51 
       
    52   $ hg evolve --stop --continue
       
    53   abort: cannot specify both "--stop" and "--continue"
       
    54   [255]
       
    55 
       
    56   $ hg evolve --stop --all
       
    57   abort: cannot specify both "--all" and "--stop"
       
    58   [255]
       
    59 
       
    60   $ hg evolve --stop --any
       
    61   abort: cannot specify both "--any" and "--stop"
       
    62   [255]
       
    63 
       
    64 Testing when only one revision is to evolve
       
    65 ===========================================
       
    66 
       
    67   $ hg prev
       
    68   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
    69   [3] added c
       
    70   $ echo bar > d
       
    71   $ hg add d
       
    72   $ hg amend
       
    73   1 new orphan changesets
       
    74   $ hg glog
       
    75   @  5:cb6a2ab625bb added c
       
    76   |   () draft
       
    77   | o  4:c41c793e0ef1 added d
       
    78   | |   () draft
       
    79   | x  3:ca1b80f7960a added c
       
    80   |/    () draft
       
    81   o  2:b1661037fa25 added b
       
    82   |   () draft
       
    83   o  1:c7586e2a9264 added a
       
    84   |   () draft
       
    85   o  0:8fa14d15e168 added hgignore
       
    86       () draft
       
    87 
       
    88   $ hg evolve
       
    89   move:[4] added d
       
    90   atop:[5] added c
       
    91   merging d
       
    92   warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
       
    93   evolve failed!
       
    94   fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
       
    95   abort: unresolved merge conflicts (see hg help resolve)
       
    96   [255]
       
    97 
       
    98   $ hg evolve --stop
       
    99   stopped the interrupted evolve
       
   100   working directory is now at cb6a2ab625bb
       
   101 
       
   102 Checking whether evolvestate file exists or not
       
   103   $ cat .hg/evolvestate
       
   104   cat: .hg/evolvestate: No such file or directory
       
   105   [1]
       
   106 
       
   107 Checking where we are
       
   108   $ hg id
       
   109   cb6a2ab625bb tip
       
   110 
       
   111 Checking working dir
       
   112   $ hg status
       
   113 Checking for incomplete mergestate
       
   114   $ ls .hg/merge
       
   115   ls: cannot access .?\.hg/merge.?: No such file or directory (re)
       
   116   [2]
       
   117 
       
   118 Checking graph
       
   119   $ hg glog
       
   120   @  5:cb6a2ab625bb added c
       
   121   |   () draft
       
   122   | o  4:c41c793e0ef1 added d
       
   123   | |   () draft
       
   124   | x  3:ca1b80f7960a added c
       
   125   |/    () draft
       
   126   o  2:b1661037fa25 added b
       
   127   |   () draft
       
   128   o  1:c7586e2a9264 added a
       
   129   |   () draft
       
   130   o  0:8fa14d15e168 added hgignore
       
   131       () draft
       
   132 
       
   133 Testing the stop flag in case conflicts are caused by `hg next --evolve`
       
   134 ========================================================================
       
   135 
       
   136   $ hg next --evolve
       
   137   move:[4] added d
       
   138   atop:[5] added c
       
   139   merging d
       
   140   warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
       
   141   evolve failed!
       
   142   fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
       
   143   abort: unresolved merge conflicts (see hg help resolve)
       
   144   [255]
       
   145 
       
   146   $ hg diff
       
   147   diff -r cb6a2ab625bb d
       
   148   --- a/d	Thu Jan 01 00:00:00 1970 +0000
       
   149   +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
   150   @@ -1,1 +1,5 @@
       
   151   +<<<<<<< destination: cb6a2ab625bb - test: added c
       
   152    bar
       
   153   +=======
       
   154   +foo
       
   155   +>>>>>>> evolving:    c41c793e0ef1 - test: added d
       
   156 
       
   157   $ hg evolve --stop
       
   158   stopped the interrupted evolve
       
   159   working directory is now at cb6a2ab625bb
       
   160 
       
   161   $ hg glog
       
   162   @  5:cb6a2ab625bb added c
       
   163   |   () draft
       
   164   | o  4:c41c793e0ef1 added d
       
   165   | |   () draft
       
   166   | x  3:ca1b80f7960a added c
       
   167   |/    () draft
       
   168   o  2:b1661037fa25 added b
       
   169   |   () draft
       
   170   o  1:c7586e2a9264 added a
       
   171   |   () draft
       
   172   o  0:8fa14d15e168 added hgignore
       
   173       () draft
       
   174 
       
   175   $ hg status
       
   176 
       
   177 Checking when multiple revs need to be evolved, some revs evolve without
       
   178 conflicts
       
   179 =========================================================================
       
   180 
       
   181 Making sure obsmarkers should be on evolved changeset and not rest of them once
       
   182 we do `evolve --stop`
       
   183 --------------------------------------------------------------------------------
       
   184 
       
   185   $ hg evolve
       
   186   move:[4] added d
       
   187   atop:[5] added c
       
   188   merging d
       
   189   warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
       
   190   evolve failed!
       
   191   fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
       
   192   abort: unresolved merge conflicts (see hg help resolve)
       
   193   [255]
       
   194   $ echo foo > d
       
   195   $ hg resolve -m
       
   196   (no more unresolved files)
       
   197   continue: hg evolve --continue
       
   198   $ hg evolve --continue
       
   199   evolving 4:c41c793e0ef1 "added d"
       
   200   working directory is now at 2a4e03d422e2
       
   201   $ hg glog
       
   202   @  6:2a4e03d422e2 added d
       
   203   |   () draft
       
   204   o  5:cb6a2ab625bb added c
       
   205   |   () draft
       
   206   o  2:b1661037fa25 added b
       
   207   |   () draft
       
   208   o  1:c7586e2a9264 added a
       
   209   |   () draft
       
   210   o  0:8fa14d15e168 added hgignore
       
   211       () draft
       
   212 
       
   213   $ hg up .^^^^
       
   214   0 files updated, 0 files merged, 4 files removed, 0 files unresolved
       
   215   $ echo bar > c
       
   216   $ hg add c
       
   217   $ hg amend
       
   218   4 new orphan changesets
       
   219 
       
   220   $ hg glog
       
   221   @  7:21817cd42526 added hgignore
       
   222       () draft
       
   223   o  6:2a4e03d422e2 added d
       
   224   |   () draft
       
   225   o  5:cb6a2ab625bb added c
       
   226   |   () draft
       
   227   o  2:b1661037fa25 added b
       
   228   |   () draft
       
   229   o  1:c7586e2a9264 added a
       
   230   |   () draft
       
   231   x  0:8fa14d15e168 added hgignore
       
   232       () draft
       
   233 
       
   234   $ hg evolve --all
       
   235   move:[1] added a
       
   236   atop:[7] added hgignore
       
   237   move:[2] added b
       
   238   atop:[8] added a
       
   239   move:[5] added c
       
   240   atop:[9] added b
       
   241   merging c
       
   242   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
   243   evolve failed!
       
   244   fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
       
   245   abort: unresolved merge conflicts (see hg help resolve)
       
   246   [255]
       
   247 
       
   248   $ hg status
       
   249   M c
       
   250   A d
       
   251 
       
   252   $ hg evolve --stop
       
   253   stopped the interrupted evolve
       
   254   working directory is now at aec285328e90
       
   255 
       
   256 Only changeset which has a successor now are obsoleted
       
   257   $ hg glog
       
   258   @  9:aec285328e90 added b
       
   259   |   () draft
       
   260   o  8:fd00db71edca added a
       
   261   |   () draft
       
   262   o  7:21817cd42526 added hgignore
       
   263       () draft
       
   264   o  6:2a4e03d422e2 added d
       
   265   |   () draft
       
   266   o  5:cb6a2ab625bb added c
       
   267   |   () draft
       
   268   x  2:b1661037fa25 added b
       
   269   |   () draft
       
   270   x  1:c7586e2a9264 added a
       
   271   |   () draft
       
   272   x  0:8fa14d15e168 added hgignore
       
   273       () draft
       
   274 
       
   275 Making sure doing evolve again resumes from right place and does the right thing
       
   276 
       
   277   $ hg evolve --all
       
   278   move:[5] added c
       
   279   atop:[9] added b
       
   280   merging c
       
   281   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
   282   evolve failed!
       
   283   fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
       
   284   abort: unresolved merge conflicts (see hg help resolve)
       
   285   [255]
       
   286 
       
   287   $ echo foobar > c
       
   288   $ hg resolve -m
       
   289   (no more unresolved files)
       
   290   continue: hg evolve --continue
       
   291   $ hg evolve --continue
       
   292   evolving 5:cb6a2ab625bb "added c"
       
   293   move:[6] added d
       
   294   atop:[10] added c
       
   295   working directory is now at cd0909a30222
       
   296   $ hg glog
       
   297   @  11:cd0909a30222 added d
       
   298   |   () draft
       
   299   o  10:cb1dd1086ef6 added c
       
   300   |   () draft
       
   301   o  9:aec285328e90 added b
       
   302   |   () draft
       
   303   o  8:fd00db71edca added a
       
   304   |   () draft
       
   305   o  7:21817cd42526 added hgignore
       
   306       () draft
       
   307 
       
   308 Bookmarks should only be moved of the changesets which have been evolved,
       
   309 bookmarks of rest of them should stay where they are are
       
   310 -------------------------------------------------------------------------
       
   311 
       
   312   $ hg up .^
       
   313   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   314   $ hg bookmark b1
       
   315   $ hg up .^
       
   316   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   317   (leaving bookmark b1)
       
   318   $ hg bookmark b2
       
   319 
       
   320   $ hg glog
       
   321   o  11:cd0909a30222 added d
       
   322   |   () draft
       
   323   o  10:cb1dd1086ef6 added c
       
   324   |   (b1) draft
       
   325   @  9:aec285328e90 added b
       
   326   |   (b2) draft
       
   327   o  8:fd00db71edca added a
       
   328   |   () draft
       
   329   o  7:21817cd42526 added hgignore
       
   330       () draft
       
   331 
       
   332   $ hg prev
       
   333   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   334   [8] added a
       
   335   $ echo tom > c
       
   336   $ hg amend
       
   337   3 new orphan changesets
       
   338 
       
   339   $ hg glog
       
   340   @  12:a3cc2042492f added a
       
   341   |   () draft
       
   342   | o  11:cd0909a30222 added d
       
   343   | |   () draft
       
   344   | o  10:cb1dd1086ef6 added c
       
   345   | |   (b1) draft
       
   346   | o  9:aec285328e90 added b
       
   347   | |   (b2) draft
       
   348   | x  8:fd00db71edca added a
       
   349   |/    () draft
       
   350   o  7:21817cd42526 added hgignore
       
   351       () draft
       
   352 
       
   353   $ hg evolve --all
       
   354   move:[9] added b
       
   355   atop:[12] added a
       
   356   move:[10] added c
       
   357   atop:[13] added b
       
   358   merging c
       
   359   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
   360   evolve failed!
       
   361   fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
       
   362   abort: unresolved merge conflicts (see hg help resolve)
       
   363   [255]
       
   364 
       
   365   $ hg evolve --stop
       
   366   stopped the interrupted evolve
       
   367   working directory is now at a3f4b95da934
       
   368 
       
   369 Bookmarks of only the changeset which are evolved is moved
       
   370   $ hg glog
       
   371   @  13:a3f4b95da934 added b
       
   372   |   (b2) draft
       
   373   o  12:a3cc2042492f added a
       
   374   |   () draft
       
   375   | o  11:cd0909a30222 added d
       
   376   | |   () draft
       
   377   | o  10:cb1dd1086ef6 added c
       
   378   | |   (b1) draft
       
   379   | x  9:aec285328e90 added b
       
   380   | |   () draft
       
   381   | x  8:fd00db71edca added a
       
   382   |/    () draft
       
   383   o  7:21817cd42526 added hgignore
       
   384       () draft