tests/test-evolve-orphan-merge.t
changeset 3528 92f1e2408fd0
child 3529 d90e0faaec80
equal deleted inserted replaced
3527:7b4d1bfb6b7d 3528:92f1e2408fd0
       
     1 ** Testing resolution of orphans by `hg evolve` when merges are involved **
       
     2 
       
     3   $ cat >> $HGRCPATH <<EOF
       
     4   > [ui]
       
     5   > interactive = True
       
     6   > [alias]
       
     7   > glog = log -GT "{rev}:{node|short} {desc}\n ({bookmarks}) {phase}"
       
     8   > [extensions]
       
     9   > rebase =
       
    10   > EOF
       
    11   $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
       
    12 
       
    13 Repo Setup
       
    14 
       
    15   $ hg init repo
       
    16   $ cd repo
       
    17   $ echo ".*\.orig" > .hgignore
       
    18   $ hg add .hgignore
       
    19   $ hg ci -m "added hgignore"
       
    20 
       
    21 An orphan merge changeset with one of the parent obsoleted
       
    22 ==========================================================
       
    23 
       
    24 1) When merging both the parents does not result in conflicts
       
    25 -------------------------------------------------------------
       
    26 
       
    27   $ echo foo > a
       
    28   $ hg ci -Aqm "added a"
       
    29   $ hg up .^
       
    30   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
    31   $ echo foo > b
       
    32   $ hg ci -Aqm "added b"
       
    33   $ hg merge
       
    34   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    35   (branch merge, don't forget to commit)
       
    36   $ hg ci -m "merging a and b"
       
    37 
       
    38   $ hg glog
       
    39   @    3:3b2b6f4652ee merging a and b
       
    40   |\    () draft
       
    41   | o  2:d76850646258 added b
       
    42   | |   () draft
       
    43   o |  1:c7586e2a9264 added a
       
    44   |/    () draft
       
    45   o  0:8fa14d15e168 added hgignore
       
    46       () draft
       
    47 
       
    48 Testing with obsoleting the second parent
       
    49 
       
    50   $ hg up d76850646258
       
    51   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
    52   $ echo bar > b
       
    53   $ hg amend
       
    54   1 new orphan changesets
       
    55 
       
    56   $ hg glog
       
    57   @  4:64370c9805e7 added b
       
    58   |   () draft
       
    59   | *    3:3b2b6f4652ee merging a and b
       
    60   | |\    () draft
       
    61   +---x  2:d76850646258 added b
       
    62   | |     () draft
       
    63   | o  1:c7586e2a9264 added a
       
    64   |/    () draft
       
    65   o  0:8fa14d15e168 added hgignore
       
    66       () draft
       
    67 
       
    68   $ hg evolve --all
       
    69   move:[3] merging a and b
       
    70   atop:[4] added b
       
    71   working directory is now at 91fd62122a4b
       
    72 
       
    73   $ hg glog
       
    74   @    5:91fd62122a4b merging a and b
       
    75   |\    () draft
       
    76   | o  4:64370c9805e7 added b
       
    77   | |   () draft
       
    78   o |  1:c7586e2a9264 added a
       
    79   |/    () draft
       
    80   o  0:8fa14d15e168 added hgignore
       
    81       () draft
       
    82 
       
    83   $ hg parents
       
    84   changeset:   5:91fd62122a4b
       
    85   tag:         tip
       
    86   parent:      4:64370c9805e7
       
    87   parent:      1:c7586e2a9264
       
    88   user:        test
       
    89   date:        Thu Jan 01 00:00:00 1970 +0000
       
    90   summary:     merging a and b
       
    91   
       
    92 
       
    93 Testing with obsoleting the first parent
       
    94 
       
    95   $ hg up c7586e2a9264
       
    96   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
    97   $ echo bar > a
       
    98   $ hg amend
       
    99   1 new orphan changesets
       
   100 
       
   101   $ hg glog
       
   102   @  6:3d41537b44ca added a
       
   103   |   () draft
       
   104   | *    5:91fd62122a4b merging a and b
       
   105   | |\    () draft
       
   106   +---o  4:64370c9805e7 added b
       
   107   | |     () draft
       
   108   | x  1:c7586e2a9264 added a
       
   109   |/    () draft
       
   110   o  0:8fa14d15e168 added hgignore
       
   111       () draft
       
   112 
       
   113   $ hg evolve --all
       
   114   move:[5] merging a and b
       
   115   atop:[6] added a
       
   116   working directory is now at 968d205ba4d8
       
   117 
       
   118   $ hg glog
       
   119   @    7:968d205ba4d8 merging a and b
       
   120   |\    () draft
       
   121   | o  6:3d41537b44ca added a
       
   122   | |   () draft
       
   123   o |  4:64370c9805e7 added b
       
   124   |/    () draft
       
   125   o  0:8fa14d15e168 added hgignore
       
   126       () draft
       
   127 
       
   128   $ hg parents
       
   129   changeset:   7:968d205ba4d8
       
   130   tag:         tip
       
   131   parent:      6:3d41537b44ca
       
   132   parent:      4:64370c9805e7
       
   133   user:        test
       
   134   date:        Thu Jan 01 00:00:00 1970 +0000
       
   135   summary:     merging a and b
       
   136   
       
   137 2) When merging both the parents resulted in conflicts
       
   138 ------------------------------------------------------
       
   139 
       
   140   $ hg up 8fa14d15e168
       
   141   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   142   $ echo foo > c
       
   143   $ hg ci -Aqm "foo to c"
       
   144   $ hg prev
       
   145   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   146   [0] added hgignore
       
   147   $ echo bar > c
       
   148   $ hg ci -Aqm "bar to c"
       
   149 
       
   150   $ hg glog
       
   151   @  9:d0f84b25d4e3 bar to c
       
   152   |   () draft
       
   153   | o  8:1c165c673853 foo to c
       
   154   |/    () draft
       
   155   | o    7:968d205ba4d8 merging a and b
       
   156   | |\    () draft
       
   157   +---o  6:3d41537b44ca added a
       
   158   | |     () draft
       
   159   | o  4:64370c9805e7 added b
       
   160   |/    () draft
       
   161   o  0:8fa14d15e168 added hgignore
       
   162       () draft
       
   163 
       
   164 Prune old test changesets to have clear graph view
       
   165   $ hg prune -r 64370c9805e7 -r 3d41537b44ca -r 968d205ba4d8
       
   166   3 changesets pruned
       
   167 
       
   168   $ hg glog
       
   169   @  9:d0f84b25d4e3 bar to c
       
   170   |   () draft
       
   171   | o  8:1c165c673853 foo to c
       
   172   |/    () draft
       
   173   o  0:8fa14d15e168 added hgignore
       
   174       () draft
       
   175 
       
   176   $ hg merge
       
   177   merging c
       
   178   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
   179   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
   180   use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
       
   181   [1]
       
   182   $ echo foobar > c
       
   183   $ hg resolve -m
       
   184   (no more unresolved files)
       
   185   $ hg ci -m "foobar to c"
       
   186 
       
   187   $ hg glog
       
   188   @    10:fd41d25a3e90 foobar to c
       
   189   |\    () draft
       
   190   | o  9:d0f84b25d4e3 bar to c
       
   191   | |   () draft
       
   192   o |  8:1c165c673853 foo to c
       
   193   |/    () draft
       
   194   o  0:8fa14d15e168 added hgignore
       
   195       () draft
       
   196 
       
   197 Testing with first parent obsoleted
       
   198 
       
   199   $ hg up 1c165c673853
       
   200   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   201   $ echo FOO > c
       
   202   $ hg amend
       
   203   1 new orphan changesets
       
   204 
       
   205   $ hg glog
       
   206   @  11:31c317b7bdb1 foo to c
       
   207   |   () draft
       
   208   | *    10:fd41d25a3e90 foobar to c
       
   209   | |\    () draft
       
   210   +---o  9:d0f84b25d4e3 bar to c
       
   211   | |     () draft
       
   212   | x  8:1c165c673853 foo to c
       
   213   |/    () draft
       
   214   o  0:8fa14d15e168 added hgignore
       
   215       () draft
       
   216 
       
   217   $ hg evolve --all
       
   218   move:[10] foobar to c
       
   219   atop:[11] foo to c
       
   220   merging c
       
   221   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
   222   evolve failed!
       
   223   fix conflict and run 'hg evolve --continue' or use 'hg update -C .' to abort
       
   224   abort: unresolved merge conflicts (see hg help resolve)
       
   225   [255]
       
   226 
       
   227   $ echo FOObar > c
       
   228   $ hg resolve -m
       
   229   (no more unresolved files)
       
   230   continue: hg evolve --continue
       
   231   $ hg evolve --continue
       
   232   evolving 10:fd41d25a3e90 "foobar to c"
       
   233   working directory is now at 6b42180a13dd
       
   234 
       
   235 XXX: we lost the second parent here after interrupted evolve
       
   236   $ hg glog
       
   237   @  12:6b42180a13dd foobar to c
       
   238   |   () draft
       
   239   o  11:31c317b7bdb1 foo to c
       
   240   |   () draft
       
   241   | o  9:d0f84b25d4e3 bar to c
       
   242   |/    () draft
       
   243   o  0:8fa14d15e168 added hgignore
       
   244       () draft
       
   245 
       
   246   $ hg parents
       
   247   changeset:   12:6b42180a13dd
       
   248   tag:         tip
       
   249   user:        test
       
   250   date:        Thu Jan 01 00:00:00 1970 +0000
       
   251   summary:     foobar to c
       
   252   
       
   253 Getting back to a state from where we can test the same thing with obsoleting
       
   254 the second parent
       
   255 
       
   256   $ hg prune -r .
       
   257   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   258   working directory now at 31c317b7bdb1
       
   259   1 changesets pruned
       
   260   $ hg merge
       
   261   merging c
       
   262   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
   263   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
   264   use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
       
   265   [1]
       
   266 
       
   267   $ echo FOObar > c
       
   268   $ hg resolve -m
       
   269   (no more unresolved files)
       
   270   $ hg commit -m "FOObar to c"
       
   271 
       
   272   $ hg glog
       
   273   @    13:14ac829917d7 FOObar to c
       
   274   |\    () draft
       
   275   | o  11:31c317b7bdb1 foo to c
       
   276   | |   () draft
       
   277   o |  9:d0f84b25d4e3 bar to c
       
   278   |/    () draft
       
   279   o  0:8fa14d15e168 added hgignore
       
   280       () draft
       
   281 
       
   282 Testing a conlficting merge with second parent obsoleted
       
   283 
       
   284   $ hg up 31c317b7bdb1
       
   285   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   286   $ echo foo > c
       
   287   $ hg amend
       
   288   1 new orphan changesets
       
   289 
       
   290   $ hg glog
       
   291   @  14:928097d0b5b5 foo to c
       
   292   |   () draft
       
   293   | *    13:14ac829917d7 FOObar to c
       
   294   | |\    () draft
       
   295   +---x  11:31c317b7bdb1 foo to c
       
   296   | |     () draft
       
   297   | o  9:d0f84b25d4e3 bar to c
       
   298   |/    () draft
       
   299   o  0:8fa14d15e168 added hgignore
       
   300       () draft
       
   301 
       
   302   $ hg evolve --all
       
   303   move:[13] FOObar to c
       
   304   atop:[14] foo to c
       
   305   merging c
       
   306   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
   307   evolve failed!
       
   308   fix conflict and run 'hg evolve --continue' or use 'hg update -C .' to abort
       
   309   abort: unresolved merge conflicts (see hg help resolve)
       
   310   [255]
       
   311 
       
   312   $ echo foobar > c
       
   313   $ hg resolve -m
       
   314   (no more unresolved files)
       
   315   continue: hg evolve --continue
       
   316 
       
   317   $ hg evolve --continue
       
   318   evolving 13:14ac829917d7 "FOObar to c"
       
   319   working directory is now at 910c14950386
       
   320 
       
   321 XXX: we lost a parent here again.
       
   322   $ hg glog
       
   323   @  15:910c14950386 FOObar to c
       
   324   |   () draft
       
   325   o  14:928097d0b5b5 foo to c
       
   326   |   () draft
       
   327   | o  9:d0f84b25d4e3 bar to c
       
   328   |/    () draft
       
   329   o  0:8fa14d15e168 added hgignore
       
   330       () draft