tests/test-evolve-content-divergence.t
changeset 4490 7a5c6109ee84
parent 4489 818e8190e867
parent 4481 d02a7c8cdee5
child 4491 bdaf34903430
equal deleted inserted replaced
4489:818e8190e867 4490:7a5c6109ee84
     1 ** Test for handling of content divergent changesets by `hg evolve` **
       
     2 ====================================================================
       
     3 
       
     4   $ cat >> $HGRCPATH <<EOF
       
     5   > [alias]
       
     6   > glog = log -GT "{rev}:{node|short} {desc|firstline}\n ({bookmarks}) [{branch}] {phase}"
       
     7   > [phases]
       
     8   > publish = False
       
     9   > [extensions]
       
    10   > rebase =
       
    11   > EOF
       
    12   $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
       
    13 
       
    14   $ hg init cdiv
       
    15   $ cd cdiv
       
    16   $ echo ".*\.orig" > .hgignore
       
    17   $ hg add .hgignore
       
    18   $ hg ci -m "added hgignore"
       
    19   $ for ch in a b c d; do echo foo > $ch; hg add $ch; hg ci -qm "added "$ch; done;
       
    20 
       
    21   $ hg glog
       
    22   @  4:c41c793e0ef1 added d
       
    23   |   () [default] draft
       
    24   o  3:ca1b80f7960a added c
       
    25   |   () [default] draft
       
    26   o  2:b1661037fa25 added b
       
    27   |   () [default] draft
       
    28   o  1:c7586e2a9264 added a
       
    29   |   () [default] draft
       
    30   o  0:8fa14d15e168 added hgignore
       
    31       () [default] draft
       
    32 
       
    33 Creating content-divergence with branch change where base, divergent and other
       
    34 have different branches
       
    35 -------------------------------------------------------------------------------
       
    36 
       
    37   $ hg branch -r . foobar
       
    38   changed branch on 1 changesets
       
    39 
       
    40   $ hg up c41c793e0ef1 --hidden
       
    41   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    42   updated to hidden changeset c41c793e0ef1
       
    43   (hidden revision 'c41c793e0ef1' was rewritten as: 9e5dffcb3d48)
       
    44   working directory parent is obsolete! (c41c793e0ef1)
       
    45   (use 'hg evolve' to update to its successor: 9e5dffcb3d48)
       
    46   $ echo bar > d
       
    47   $ hg branch watwat
       
    48   marked working directory as branch watwat
       
    49   $ hg amend
       
    50   2 new content-divergent changesets
       
    51 
       
    52   $ hg glog
       
    53   @  6:264b04f771fb added d
       
    54   |   () [watwat] draft
       
    55   | *  5:9e5dffcb3d48 added d
       
    56   |/    () [foobar] draft
       
    57   o  3:ca1b80f7960a added c
       
    58   |   () [default] draft
       
    59   o  2:b1661037fa25 added b
       
    60   |   () [default] draft
       
    61   o  1:c7586e2a9264 added a
       
    62   |   () [default] draft
       
    63   o  0:8fa14d15e168 added hgignore
       
    64       () [default] draft
       
    65 
       
    66   $ hg evolve --content-divergent --config ui.interactive=True<<EOF
       
    67   > c
       
    68   > EOF
       
    69   merge:[6] added d
       
    70   with: [5] added d
       
    71   base: [4] added d
       
    72   merging "other" content-divergent changeset '9e5dffcb3d48'
       
    73   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    74   content divergent changesets on different branches.
       
    75   choose branch for the resolution changeset. (a) default or (b) watwat or (c) foobar?  c
       
    76   working directory is now at 0ac42f1bc15c
       
    77 
       
    78   $ hg glog
       
    79   @  7:0ac42f1bc15c added d
       
    80   |   () [foobar] draft
       
    81   o  3:ca1b80f7960a added c
       
    82   |   () [default] draft
       
    83   o  2:b1661037fa25 added b
       
    84   |   () [default] draft
       
    85   o  1:c7586e2a9264 added a
       
    86   |   () [default] draft
       
    87   o  0:8fa14d15e168 added hgignore
       
    88       () [default] draft
       
    89 
       
    90 Testing merging of commit messages
       
    91 -----------------------------------
       
    92 
       
    93 When base and one of the divergent has same commit messages and other divergent
       
    94 has different one
       
    95 
       
    96   $ echo wat > d
       
    97   $ hg amend
       
    98 
       
    99   $ hg up .^
       
   100   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   101 
       
   102   $ echo bar > d
       
   103   $ hg ci -Aqm "added a d with bar in it, expect some beers"
       
   104 
       
   105   $ hg prune -r 0ac42f1bc15c -s . --hidden
       
   106   1 changesets pruned
       
   107   2 new content-divergent changesets
       
   108 
       
   109   $ hg glog
       
   110   @  9:59081c9c425a added a d with bar in it, expect some beers
       
   111   |   () [default] draft
       
   112   | *  8:f621d00f5f0e added d
       
   113   |/    () [foobar] draft
       
   114   o  3:ca1b80f7960a added c
       
   115   |   () [default] draft
       
   116   o  2:b1661037fa25 added b
       
   117   |   () [default] draft
       
   118   o  1:c7586e2a9264 added a
       
   119   |   () [default] draft
       
   120   o  0:8fa14d15e168 added hgignore
       
   121       () [default] draft
       
   122 
       
   123   $ hg evolve --content-divergent
       
   124   merge:[9] added a d with bar in it, expect some beers
       
   125   with: [8] added d
       
   126   base: [7] added d
       
   127   merging "other" content-divergent changeset 'f621d00f5f0e'
       
   128   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   129   working directory is now at a9d6fd6b5e40
       
   130 
       
   131   $ hg glog
       
   132   @  10:a9d6fd6b5e40 added a d with bar in it, expect some beers
       
   133   |   () [default] draft
       
   134   o  3:ca1b80f7960a added c
       
   135   |   () [default] draft
       
   136   o  2:b1661037fa25 added b
       
   137   |   () [default] draft
       
   138   o  1:c7586e2a9264 added a
       
   139   |   () [default] draft
       
   140   o  0:8fa14d15e168 added hgignore
       
   141       () [default] draft
       
   142 
       
   143 When base has different message and both divergents has same one
       
   144 
       
   145   $ echo foo > d
       
   146   $ hg amend -m "foo to d"
       
   147 
       
   148   $ hg up a9d6fd6b5e40 --hidden
       
   149   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   150   updated to hidden changeset a9d6fd6b5e40
       
   151   (hidden revision 'a9d6fd6b5e40' was rewritten as: b10b07a394f1)
       
   152   working directory parent is obsolete! (a9d6fd6b5e40)
       
   153   (use 'hg evolve' to update to its successor: b10b07a394f1)
       
   154   $ echo babar > d
       
   155   $ hg amend -m "foo to d"
       
   156   2 new content-divergent changesets
       
   157 
       
   158   $ hg glog
       
   159   @  12:0bb497fed24a foo to d
       
   160   |   () [default] draft
       
   161   | *  11:b10b07a394f1 foo to d
       
   162   |/    () [default] draft
       
   163   o  3:ca1b80f7960a added c
       
   164   |   () [default] draft
       
   165   o  2:b1661037fa25 added b
       
   166   |   () [default] draft
       
   167   o  1:c7586e2a9264 added a
       
   168   |   () [default] draft
       
   169   o  0:8fa14d15e168 added hgignore
       
   170       () [default] draft
       
   171 
       
   172   $ hg evolve --content-divergent
       
   173   merge:[12] foo to d
       
   174   with: [11] foo to d
       
   175   base: [10] added a d with bar in it, expect some beers
       
   176   merging "other" content-divergent changeset 'b10b07a394f1'
       
   177   merging d
       
   178   warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
       
   179   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
   180   fix conflicts and see `hg help evolve.interrupted`
       
   181   [1]
       
   182 
       
   183   $ echo foobar > d
       
   184   $ hg resolve -m
       
   185   (no more unresolved files)
       
   186   continue: hg evolve --continue
       
   187   $ hg evolve --continue
       
   188   working directory is now at 11175423b5dc
       
   189 
       
   190   $ hg glog
       
   191   @  13:11175423b5dc foo to d
       
   192   |   () [default] draft
       
   193   o  3:ca1b80f7960a added c
       
   194   |   () [default] draft
       
   195   o  2:b1661037fa25 added b
       
   196   |   () [default] draft
       
   197   o  1:c7586e2a9264 added a
       
   198   |   () [default] draft
       
   199   o  0:8fa14d15e168 added hgignore
       
   200       () [default] draft
       
   201 
       
   202 When all three base, divergent and other has different commit messages creating
       
   203 conflicts
       
   204 
       
   205   $ echo bar > d
       
   206   $ hg amend -m "bar to d, expect beers"
       
   207 
       
   208   $ hg up 11175423b5dc --hidden
       
   209   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   210   updated to hidden changeset 11175423b5dc
       
   211   (hidden revision '11175423b5dc' was rewritten as: 27f0463f169a)
       
   212   working directory parent is obsolete! (11175423b5dc)
       
   213   (use 'hg evolve' to update to its successor: 27f0463f169a)
       
   214   $ echo wat > d
       
   215   $ hg amend -m "wat to d, wat?"
       
   216   2 new content-divergent changesets
       
   217 
       
   218   $ hg glog
       
   219   @  15:f542037ddf31 wat to d, wat?
       
   220   |   () [default] draft
       
   221   | *  14:27f0463f169a bar to d, expect beers
       
   222   |/    () [default] draft
       
   223   o  3:ca1b80f7960a added c
       
   224   |   () [default] draft
       
   225   o  2:b1661037fa25 added b
       
   226   |   () [default] draft
       
   227   o  1:c7586e2a9264 added a
       
   228   |   () [default] draft
       
   229   o  0:8fa14d15e168 added hgignore
       
   230       () [default] draft
       
   231 
       
   232   $ hg evolve --content-divergent
       
   233   merge:[15] wat to d, wat?
       
   234   with: [14] bar to d, expect beers
       
   235   base: [13] foo to d
       
   236   merging "other" content-divergent changeset '27f0463f169a'
       
   237   merging d
       
   238   warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
       
   239   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
   240   fix conflicts and see `hg help evolve.interrupted`
       
   241   [1]
       
   242 
       
   243   $ echo watbar > d
       
   244   $ hg resolve -m
       
   245   (no more unresolved files)
       
   246   continue: hg evolve --continue
       
   247 
       
   248   $ cat > editor.sh <<EOF
       
   249   > #!/bin/sh
       
   250   > printf "**showing editors text**\n\n"
       
   251   > cat \$1
       
   252   > printf "\n**done showing editors text**\n\n"
       
   253   > cat > \$1 <<ENDOF
       
   254   > watbar to d
       
   255   > ENDOF
       
   256   > EOF
       
   257 
       
   258   $ HGEDITOR='sh ./editor.sh' hg evolve --continue
       
   259   **showing editors text**
       
   260   
       
   261   HG: Conflicts while merging changeset description of content-divergent changesets.
       
   262   HG: Resolve conflicts in commit messages to continue.
       
   263   
       
   264   <<<<<<< divergent
       
   265   wat to d, wat?||||||| base
       
   266   foo to d=======
       
   267   bar to d, expect beers>>>>>>> other
       
   268   
       
   269   **done showing editors text**
       
   270   
       
   271   working directory is now at 89ea3eee2d69
       
   272 
       
   273   $ hg glog
       
   274   @  16:89ea3eee2d69 watbar to d
       
   275   |   () [default] draft
       
   276   o  3:ca1b80f7960a added c
       
   277   |   () [default] draft
       
   278   o  2:b1661037fa25 added b
       
   279   |   () [default] draft
       
   280   o  1:c7586e2a9264 added a
       
   281   |   () [default] draft
       
   282   o  0:8fa14d15e168 added hgignore
       
   283       () [default] draft
       
   284 
       
   285   $ cd ..
       
   286 
       
   287 Testing resolution of content-divergent changesets when they are on different
       
   288 parents and resolution and relocation wont result in conflicts
       
   289 ------------------------------------------------------------------------------
       
   290 
       
   291   $ hg init multiparents
       
   292   $ cd multiparents
       
   293   $ echo ".*\.orig" > .hgignore
       
   294   $ hg add .hgignore
       
   295   $ hg ci -m "added hgignore"
       
   296   $ for ch in a b c d; do echo foo > $ch; hg add $ch; hg ci -qm "added "$ch; done;
       
   297 
       
   298   $ hg glog
       
   299   @  4:c41c793e0ef1 added d
       
   300   |   () [default] draft
       
   301   o  3:ca1b80f7960a added c
       
   302   |   () [default] draft
       
   303   o  2:b1661037fa25 added b
       
   304   |   () [default] draft
       
   305   o  1:c7586e2a9264 added a
       
   306   |   () [default] draft
       
   307   o  0:8fa14d15e168 added hgignore
       
   308       () [default] draft
       
   309 
       
   310   $ hg up .^^
       
   311   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   312   $ echo bar > b
       
   313   $ hg amend
       
   314   2 new orphan changesets
       
   315 
       
   316   $ hg rebase -r b1661037fa25 -d 8fa14d15e168 --hidden --config experimental.evolution.allowdivergence=True
       
   317   rebasing 2:b1661037fa25 "added b"
       
   318   2 new content-divergent changesets
       
   319 
       
   320   $ hg glog
       
   321   *  6:da4b96f4a8d6 added b
       
   322   |   () [default] draft
       
   323   | @  5:7ed0642d644b added b
       
   324   | |   () [default] draft
       
   325   | | *  4:c41c793e0ef1 added d
       
   326   | | |   () [default] draft
       
   327   | | *  3:ca1b80f7960a added c
       
   328   | | |   () [default] draft
       
   329   | | x  2:b1661037fa25 added b
       
   330   | |/    () [default] draft
       
   331   | o  1:c7586e2a9264 added a
       
   332   |/    () [default] draft
       
   333   o  0:8fa14d15e168 added hgignore
       
   334       () [default] draft
       
   335 
       
   336   $ hg evolve --content-divergent
       
   337   merge:[5] added b
       
   338   with: [6] added b
       
   339   base: [2] added b
       
   340   rebasing "other" content-divergent changeset da4b96f4a8d6 on c7586e2a9264
       
   341   updating to "local" side of the conflict: 7ed0642d644b
       
   342   merging "other" content-divergent changeset '11f849d7159f'
       
   343   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   344   working directory is now at 171614c9a791
       
   345 
       
   346   $ hg glog
       
   347   @  8:171614c9a791 added b
       
   348   |   () [default] draft
       
   349   | *  4:c41c793e0ef1 added d
       
   350   | |   () [default] draft
       
   351   | *  3:ca1b80f7960a added c
       
   352   | |   () [default] draft
       
   353   | x  2:b1661037fa25 added b
       
   354   |/    () [default] draft
       
   355   o  1:c7586e2a9264 added a
       
   356   |   () [default] draft
       
   357   o  0:8fa14d15e168 added hgignore
       
   358       () [default] draft
       
   359 
       
   360   $ hg exp
       
   361   # HG changeset patch
       
   362   # User test
       
   363   # Date 0 0
       
   364   #      Thu Jan 01 00:00:00 1970 +0000
       
   365   # Node ID 171614c9a7914c53f531373b95632323fdbbac8d
       
   366   # Parent  c7586e2a92645e473645847a7b69a6dc52be4276
       
   367   added b
       
   368   
       
   369   diff -r c7586e2a9264 -r 171614c9a791 b
       
   370   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   371   +++ b/b	Thu Jan 01 00:00:00 1970 +0000
       
   372   @@ -0,0 +1,1 @@
       
   373   +bar
       
   374 
       
   375 Resolving orphans to get back to a normal graph
       
   376 
       
   377   $ hg evolve --all
       
   378   move:[3] added c
       
   379   atop:[8] added b
       
   380   move:[4] added d
       
   381   working directory is now at 4ae4427ee9f8
       
   382   $ hg glog
       
   383   @  10:4ae4427ee9f8 added d
       
   384   |   () [default] draft
       
   385   o  9:917281f93fcb added c
       
   386   |   () [default] draft
       
   387   o  8:171614c9a791 added b
       
   388   |   () [default] draft
       
   389   o  1:c7586e2a9264 added a
       
   390   |   () [default] draft
       
   391   o  0:8fa14d15e168 added hgignore
       
   392       () [default] draft
       
   393 
       
   394 More testing!
       
   395 
       
   396   $ hg up .^^
       
   397   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   398   $ echo x > x
       
   399   $ hg ci -Aqm "added x"
       
   400   $ hg glog -r .
       
   401   @  11:71a392c714b5 added x
       
   402   |   () [default] draft
       
   403   ~
       
   404 
       
   405   $ echo foo > x
       
   406   $ hg branch bar
       
   407   marked working directory as branch bar
       
   408   (branches are permanent and global, did you want a bookmark?)
       
   409   $ hg amend -m "added foo to x"
       
   410 
       
   411   $ hg up 71a392c714b5 --hidden
       
   412   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   413   updated to hidden changeset 71a392c714b5
       
   414   (hidden revision '71a392c714b5' was rewritten as: 1e1a50385a7d)
       
   415   working directory parent is obsolete! (71a392c714b5)
       
   416   (use 'hg evolve' to update to its successor: 1e1a50385a7d)
       
   417   $ hg rebase -r . -d 4ae4427ee9f8 --config experimental.evolution.allowdivergence=True
       
   418   rebasing 11:71a392c714b5 "added x"
       
   419   2 new content-divergent changesets
       
   420 
       
   421   $ hg glog
       
   422   @  13:1e4f6b3bb39b added x
       
   423   |   () [default] draft
       
   424   | *  12:1e1a50385a7d added foo to x
       
   425   | |   () [bar] draft
       
   426   o |  10:4ae4427ee9f8 added d
       
   427   | |   () [default] draft
       
   428   o |  9:917281f93fcb added c
       
   429   |/    () [default] draft
       
   430   o  8:171614c9a791 added b
       
   431   |   () [default] draft
       
   432   o  1:c7586e2a9264 added a
       
   433   |   () [default] draft
       
   434   o  0:8fa14d15e168 added hgignore
       
   435       () [default] draft
       
   436 
       
   437   $ hg evolve --content-divergent
       
   438   merge:[13] added x
       
   439   with: [12] added foo to x
       
   440   base: [11] added x
       
   441   rebasing "other" content-divergent changeset 1e1a50385a7d on 4ae4427ee9f8
       
   442   updating to "local" side of the conflict: 1e4f6b3bb39b
       
   443   merging "other" content-divergent changeset '80cc9b1ec650'
       
   444   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   445   working directory is now at b006cf317e0e
       
   446 
       
   447   $ hg exp
       
   448   # HG changeset patch
       
   449   # User test
       
   450   # Date 0 0
       
   451   #      Thu Jan 01 00:00:00 1970 +0000
       
   452   # Branch bar
       
   453   # Node ID b006cf317e0ed16dbe786c439577475580f645f1
       
   454   # Parent  4ae4427ee9f8f0935211fd66360948b77ab5aee9
       
   455   added foo to x
       
   456   
       
   457   diff -r 4ae4427ee9f8 -r b006cf317e0e x
       
   458   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   459   +++ b/x	Thu Jan 01 00:00:00 1970 +0000
       
   460   @@ -0,0 +1,1 @@
       
   461   +foo
       
   462 
       
   463 The above `hg exp` and the following log call demonstrates that message, content
       
   464 and branch change is preserved in case of relocation
       
   465   $ hg glog
       
   466   @  15:b006cf317e0e added foo to x
       
   467   |   () [bar] draft
       
   468   o  10:4ae4427ee9f8 added d
       
   469   |   () [default] draft
       
   470   o  9:917281f93fcb added c
       
   471   |   () [default] draft
       
   472   o  8:171614c9a791 added b
       
   473   |   () [default] draft
       
   474   o  1:c7586e2a9264 added a
       
   475   |   () [default] draft
       
   476   o  0:8fa14d15e168 added hgignore
       
   477       () [default] draft
       
   478 
       
   479 Testing when both the content-divergence are on different parents and resolution
       
   480 will lead to conflicts
       
   481 ---------------------------------------------------------------------------------
       
   482 
       
   483   $ hg up .^^^
       
   484   0 files updated, 0 files merged, 3 files removed, 0 files unresolved
       
   485 
       
   486   $ echo y > y
       
   487   $ hg ci -Aqm "added y"
       
   488   $ hg glog -r .
       
   489   @  16:fc6ad2bac162 added y
       
   490   |   () [default] draft
       
   491   ~
       
   492 
       
   493   $ echo bar > y
       
   494   $ hg amend
       
   495 
       
   496   $ hg up fc6ad2bac162 --hidden
       
   497   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   498   updated to hidden changeset fc6ad2bac162
       
   499   (hidden revision 'fc6ad2bac162' was rewritten as: 2a9f6ccbdeba)
       
   500   working directory parent is obsolete! (fc6ad2bac162)
       
   501   (use 'hg evolve' to update to its successor: 2a9f6ccbdeba)
       
   502   $ hg rebase -r . -d b006cf317e0e --config experimental.evolution.allowdivergence=True
       
   503   rebasing 16:fc6ad2bac162 "added y"
       
   504   2 new content-divergent changesets
       
   505   $ echo wat > y
       
   506   $ hg amend
       
   507 
       
   508   $ hg glog
       
   509   @  19:b4575ed6fcfc added y
       
   510   |   () [bar] draft
       
   511   | *  17:2a9f6ccbdeba added y
       
   512   | |   () [default] draft
       
   513   o |  15:b006cf317e0e added foo to x
       
   514   | |   () [bar] draft
       
   515   o |  10:4ae4427ee9f8 added d
       
   516   | |   () [default] draft
       
   517   o |  9:917281f93fcb added c
       
   518   |/    () [default] draft
       
   519   o  8:171614c9a791 added b
       
   520   |   () [default] draft
       
   521   o  1:c7586e2a9264 added a
       
   522   |   () [default] draft
       
   523   o  0:8fa14d15e168 added hgignore
       
   524       () [default] draft
       
   525 
       
   526   $ hg evolve --content-divergent
       
   527   merge:[19] added y
       
   528   with: [17] added y
       
   529   base: [16] added y
       
   530   rebasing "other" content-divergent changeset 2a9f6ccbdeba on b006cf317e0e
       
   531   updating to "local" side of the conflict: b4575ed6fcfc
       
   532   merging "other" content-divergent changeset '48f745db3f53'
       
   533   merging y
       
   534   warning: conflicts while merging y! (edit, then use 'hg resolve --mark')
       
   535   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
   536   fix conflicts and see `hg help evolve.interrupted`
       
   537   [1]
       
   538 
       
   539   $ echo watbar > y
       
   540   $ hg resolve -m
       
   541   (no more unresolved files)
       
   542   continue: hg evolve --continue
       
   543   $ hg evolve --continue
       
   544   working directory is now at 7bbcf24ddecf
       
   545 
       
   546   $ hg glog
       
   547   @  21:7bbcf24ddecf added y
       
   548   |   () [bar] draft
       
   549   o  15:b006cf317e0e added foo to x
       
   550   |   () [bar] draft
       
   551   o  10:4ae4427ee9f8 added d
       
   552   |   () [default] draft
       
   553   o  9:917281f93fcb added c
       
   554   |   () [default] draft
       
   555   o  8:171614c9a791 added b
       
   556   |   () [default] draft
       
   557   o  1:c7586e2a9264 added a
       
   558   |   () [default] draft
       
   559   o  0:8fa14d15e168 added hgignore
       
   560       () [default] draft
       
   561 
       
   562   $ hg obslog -r . --all
       
   563   @    7bbcf24ddecf (21) added y
       
   564   |\
       
   565   x |  48f745db3f53 (20) added y
       
   566   | |    rewritten(branch, content) as 7bbcf24ddecf using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
       
   567   | |
       
   568   | x  b4575ed6fcfc (19) added y
       
   569   | |    rewritten(content) as 7bbcf24ddecf using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
       
   570   | |
       
   571   x |  2a9f6ccbdeba (17) added y
       
   572   | |    rewritten(parent) as 48f745db3f53 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
       
   573   | |
       
   574   | x  96b677f01b81 (18) added y
       
   575   |/     rewritten(content) as b4575ed6fcfc using amend by test (Thu Jan 01 00:00:00 1970 +0000)
       
   576   |
       
   577   x  fc6ad2bac162 (16) added y
       
   578        rewritten(content) as 2a9f6ccbdeba using amend by test (Thu Jan 01 00:00:00 1970 +0000)
       
   579        rewritten(branch, parent) as 96b677f01b81 using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
       
   580   
       
   581 
       
   582 checking that relocated commit is there
       
   583   $ hg exp 48f745db3f53 --hidden
       
   584   # HG changeset patch
       
   585   # User test
       
   586   # Date 0 0
       
   587   #      Thu Jan 01 00:00:00 1970 +0000
       
   588   # Node ID 48f745db3f5300363ca248b9aeab20ff2a55fbb3
       
   589   # Parent  b006cf317e0ed16dbe786c439577475580f645f1
       
   590   added y
       
   591   
       
   592   diff -r b006cf317e0e -r 48f745db3f53 y
       
   593   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   594   +++ b/y	Thu Jan 01 00:00:00 1970 +0000
       
   595   @@ -0,0 +1,1 @@
       
   596   +bar
       
   597 
       
   598 Testing when the relocation will result in conflicts and merging also:
       
   599 ----------------------------------------------------------------------
       
   600 
       
   601   $ hg glog
       
   602   @  21:7bbcf24ddecf added y
       
   603   |   () [bar] draft
       
   604   o  15:b006cf317e0e added foo to x
       
   605   |   () [bar] draft
       
   606   o  10:4ae4427ee9f8 added d
       
   607   |   () [default] draft
       
   608   o  9:917281f93fcb added c
       
   609   |   () [default] draft
       
   610   o  8:171614c9a791 added b
       
   611   |   () [default] draft
       
   612   o  1:c7586e2a9264 added a
       
   613   |   () [default] draft
       
   614   o  0:8fa14d15e168 added hgignore
       
   615       () [default] draft
       
   616 
       
   617   $ hg up .^^^^
       
   618   0 files updated, 0 files merged, 4 files removed, 0 files unresolved
       
   619 
       
   620   $ echo z > z
       
   621   $ hg ci -Aqm "added z"
       
   622   $ hg glog -r .
       
   623   @  22:daf1de08f3b0 added z
       
   624   |   () [default] draft
       
   625   ~
       
   626 
       
   627   $ echo foo > y
       
   628   $ hg add y
       
   629   $ hg amend
       
   630 
       
   631   $ hg up daf1de08f3b0 --hidden
       
   632   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   633   updated to hidden changeset daf1de08f3b0
       
   634   (hidden revision 'daf1de08f3b0' was rewritten as: 3f7a1f693080)
       
   635   working directory parent is obsolete! (daf1de08f3b0)
       
   636   (use 'hg evolve' to update to its successor: 3f7a1f693080)
       
   637   $ hg rebase -r . -d 7bbcf24ddecf --config experimental.evolution.allowdivergence=True
       
   638   rebasing 22:daf1de08f3b0 "added z"
       
   639   2 new content-divergent changesets
       
   640   $ echo bar > z
       
   641   $ hg amend
       
   642 
       
   643   $ hg glog
       
   644   @  25:53242575ffa9 added z
       
   645   |   () [bar] draft
       
   646   | *  23:3f7a1f693080 added z
       
   647   | |   () [default] draft
       
   648   o |  21:7bbcf24ddecf added y
       
   649   | |   () [bar] draft
       
   650   o |  15:b006cf317e0e added foo to x
       
   651   | |   () [bar] draft
       
   652   o |  10:4ae4427ee9f8 added d
       
   653   | |   () [default] draft
       
   654   o |  9:917281f93fcb added c
       
   655   |/    () [default] draft
       
   656   o  8:171614c9a791 added b
       
   657   |   () [default] draft
       
   658   o  1:c7586e2a9264 added a
       
   659   |   () [default] draft
       
   660   o  0:8fa14d15e168 added hgignore
       
   661       () [default] draft
       
   662 
       
   663   $ hg evolve --content-divergent --any
       
   664   merge:[25] added z
       
   665   with: [23] added z
       
   666   base: [22] added z
       
   667   rebasing "other" content-divergent changeset 3f7a1f693080 on 7bbcf24ddecf
       
   668   merging y
       
   669   warning: conflicts while merging y! (edit, then use 'hg resolve --mark')
       
   670   fix conflicts and see `hg help evolve.interrupted`
       
   671   [1]
       
   672 
       
   673   $ hg diff
       
   674   diff -r 7bbcf24ddecf y
       
   675   --- a/y	Thu Jan 01 00:00:00 1970 +0000
       
   676   +++ b/y	Thu Jan 01 00:00:00 1970 +0000
       
   677   @@ -1,1 +1,5 @@
       
   678   +<<<<<<< destination: 7bbcf24ddecf bar - test: added y
       
   679    watbar
       
   680   +=======
       
   681   +foo
       
   682   +>>>>>>> evolving:    3f7a1f693080 - test: added z
       
   683   diff -r 7bbcf24ddecf z
       
   684   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   685   +++ b/z	Thu Jan 01 00:00:00 1970 +0000
       
   686   @@ -0,0 +1,1 @@
       
   687   +z
       
   688 
       
   689   $ echo foo > y
       
   690   $ hg resolve -m
       
   691   (no more unresolved files)
       
   692   continue: hg evolve --continue
       
   693 
       
   694   $ hg evolve --continue
       
   695   evolving 23:3f7a1f693080 "added z"
       
   696   updating to "local" side of the conflict: 53242575ffa9
       
   697   merging "other" content-divergent changeset 'cdb0643c69fc'
       
   698   merging y
       
   699   warning: conflicts while merging y! (edit, then use 'hg resolve --mark')
       
   700   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
   701   fix conflicts and see `hg help evolve.interrupted`
       
   702   [1]
       
   703 
       
   704   $ hg diff
       
   705   diff -r 53242575ffa9 y
       
   706   --- a/y	Thu Jan 01 00:00:00 1970 +0000
       
   707   +++ b/y	Thu Jan 01 00:00:00 1970 +0000
       
   708   @@ -1,1 +1,5 @@
       
   709   +<<<<<<< local: 53242575ffa9 bar - test: added z
       
   710    watbar
       
   711   +=======
       
   712   +foo
       
   713   +>>>>>>> other: cdb0643c69fc - test: added z
       
   714 
       
   715   $ echo foo > y
       
   716   $ hg resolve -m
       
   717   (no more unresolved files)
       
   718   continue: hg evolve --continue
       
   719   $ hg evolve --continue
       
   720   working directory is now at 6fc7d9682de6
       
   721 
       
   722   $ hg glog
       
   723   @  27:6fc7d9682de6 added z
       
   724   |   () [bar] draft
       
   725   o  21:7bbcf24ddecf added y
       
   726   |   () [bar] draft
       
   727   o  15:b006cf317e0e added foo to x
       
   728   |   () [bar] draft
       
   729   o  10:4ae4427ee9f8 added d
       
   730   |   () [default] draft
       
   731   o  9:917281f93fcb added c
       
   732   |   () [default] draft
       
   733   o  8:171614c9a791 added b
       
   734   |   () [default] draft
       
   735   o  1:c7586e2a9264 added a
       
   736   |   () [default] draft
       
   737   o  0:8fa14d15e168 added hgignore
       
   738       () [default] draft
       
   739 
       
   740   $ hg exp
       
   741   # HG changeset patch
       
   742   # User test
       
   743   # Date 0 0
       
   744   #      Thu Jan 01 00:00:00 1970 +0000
       
   745   # Branch bar
       
   746   # Node ID 6fc7d9682de6e3bee6c8b1266b756ed7d522b7e4
       
   747   # Parent  7bbcf24ddecfe97d7c2ac6fa8c07c155c8fda47b
       
   748   added z
       
   749   
       
   750   diff -r 7bbcf24ddecf -r 6fc7d9682de6 y
       
   751   --- a/y	Thu Jan 01 00:00:00 1970 +0000
       
   752   +++ b/y	Thu Jan 01 00:00:00 1970 +0000
       
   753   @@ -1,1 +1,1 @@
       
   754   -watbar
       
   755   +foo
       
   756   diff -r 7bbcf24ddecf -r 6fc7d9682de6 z
       
   757   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   758   +++ b/z	Thu Jan 01 00:00:00 1970 +0000
       
   759   @@ -0,0 +1,1 @@
       
   760   +bar
       
   761 
       
   762   $ cd ..
       
   763 
       
   764 Resolving content-divergence of a stack with same parents
       
   765 ---------------------------------------------------------
       
   766 
       
   767   $ hg init stacktest
       
   768   $ cd stacktest
       
   769   $ echo ".*\.orig" > .hgignore
       
   770   $ hg add .hgignore
       
   771   $ hg ci -m "added hgignore"
       
   772   $ for ch in a b c d; do echo foo > $ch; hg add $ch; hg ci -qm "added "$ch; done;
       
   773 
       
   774   $ hg glog
       
   775   @  4:c41c793e0ef1 added d
       
   776   |   () [default] draft
       
   777   o  3:ca1b80f7960a added c
       
   778   |   () [default] draft
       
   779   o  2:b1661037fa25 added b
       
   780   |   () [default] draft
       
   781   o  1:c7586e2a9264 added a
       
   782   |   () [default] draft
       
   783   o  0:8fa14d15e168 added hgignore
       
   784       () [default] draft
       
   785 
       
   786   $ cd ..
       
   787   $ hg init stack2
       
   788   $ cd stack2
       
   789   $ hg pull ../stacktest
       
   790   pulling from ../stacktest
       
   791   requesting all changes
       
   792   adding changesets
       
   793   adding manifests
       
   794   adding file changes
       
   795   added 5 changesets with 5 changes to 5 files
       
   796   new changesets 8fa14d15e168:c41c793e0ef1 (5 drafts)
       
   797   (run 'hg update' to get a working copy)
       
   798   $ hg glog
       
   799   o  4:c41c793e0ef1 added d
       
   800   |   () [default] draft
       
   801   o  3:ca1b80f7960a added c
       
   802   |   () [default] draft
       
   803   o  2:b1661037fa25 added b
       
   804   |   () [default] draft
       
   805   o  1:c7586e2a9264 added a
       
   806   |   () [default] draft
       
   807   o  0:8fa14d15e168 added hgignore
       
   808       () [default] draft
       
   809 
       
   810   $ hg up c7586e2a9264
       
   811   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   812   $ echo bar > a
       
   813   $ hg amend -m "watbar to a"
       
   814   3 new orphan changesets
       
   815   $ echo wat > a
       
   816   $ hg amend -m "watbar to a"
       
   817   $ hg evolve --all
       
   818   move:[2] added b
       
   819   atop:[6] watbar to a
       
   820   move:[3] added c
       
   821   move:[4] added d
       
   822   working directory is now at 15c781f93cac
       
   823   $ hg glog
       
   824   @  9:15c781f93cac added d
       
   825   |   () [default] draft
       
   826   o  8:9e5fb1d5b955 added c
       
   827   |   () [default] draft
       
   828   o  7:88516dccf68a added b
       
   829   |   () [default] draft
       
   830   o  6:82b74d5dc678 watbar to a
       
   831   |   () [default] draft
       
   832   o  0:8fa14d15e168 added hgignore
       
   833       () [default] draft
       
   834 
       
   835   $ cd ../stacktest
       
   836   $ hg up .^^^
       
   837   0 files updated, 0 files merged, 3 files removed, 0 files unresolved
       
   838   $ echo wat > a
       
   839   $ hg amend -m "watbar to a"
       
   840   3 new orphan changesets
       
   841   $ hg evolve --all
       
   842   move:[2] added b
       
   843   atop:[5] watbar to a
       
   844   move:[3] added c
       
   845   move:[4] added d
       
   846   working directory is now at c72d2885eb51
       
   847   $ hg glog
       
   848   @  8:c72d2885eb51 added d
       
   849   |   () [default] draft
       
   850   o  7:3ce4be6d8e5e added c
       
   851   |   () [default] draft
       
   852   o  6:d5f148423c16 added b
       
   853   |   () [default] draft
       
   854   o  5:8e222f257bbf watbar to a
       
   855   |   () [default] draft
       
   856   o  0:8fa14d15e168 added hgignore
       
   857       () [default] draft
       
   858 
       
   859   $ hg pull ../stack2
       
   860   pulling from ../stack2
       
   861   searching for changes
       
   862   adding changesets
       
   863   adding manifests
       
   864   adding file changes
       
   865   added 4 changesets with 0 changes to 4 files (+1 heads)
       
   866   5 new obsolescence markers
       
   867   8 new content-divergent changesets
       
   868   new changesets 82b74d5dc678:15c781f93cac (4 drafts)
       
   869   (run 'hg heads' to see heads, 'hg merge' to merge)
       
   870 
       
   871   $ hg glog
       
   872   *  12:15c781f93cac added d
       
   873   |   () [default] draft
       
   874   *  11:9e5fb1d5b955 added c
       
   875   |   () [default] draft
       
   876   *  10:88516dccf68a added b
       
   877   |   () [default] draft
       
   878   *  9:82b74d5dc678 watbar to a
       
   879   |   () [default] draft
       
   880   | @  8:c72d2885eb51 added d
       
   881   | |   () [default] draft
       
   882   | *  7:3ce4be6d8e5e added c
       
   883   | |   () [default] draft
       
   884   | *  6:d5f148423c16 added b
       
   885   | |   () [default] draft
       
   886   | *  5:8e222f257bbf watbar to a
       
   887   |/    () [default] draft
       
   888   o  0:8fa14d15e168 added hgignore
       
   889       () [default] draft
       
   890 
       
   891   $ hg evolve --all --content-divergent
       
   892   merge:[5] watbar to a
       
   893   with: [9] watbar to a
       
   894   base: [1] added a
       
   895   updating to "local" side of the conflict: 8e222f257bbf
       
   896   merging "other" content-divergent changeset '82b74d5dc678'
       
   897   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   898   6 new orphan changesets
       
   899   merge:[6] added b
       
   900   with: [10] added b
       
   901   base: [2] added b
       
   902   updating to "local" side of the conflict: d5f148423c16
       
   903   merging "other" content-divergent changeset '88516dccf68a'
       
   904   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   905   merge:[7] added c
       
   906   with: [11] added c
       
   907   base: [3] added c
       
   908   updating to "local" side of the conflict: 3ce4be6d8e5e
       
   909   merging "other" content-divergent changeset '9e5fb1d5b955'
       
   910   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   911   merge:[8] added d
       
   912   with: [12] added d
       
   913   base: [4] added d
       
   914   updating to "local" side of the conflict: c72d2885eb51
       
   915   merging "other" content-divergent changeset '15c781f93cac'
       
   916   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   917   working directory is now at 038fe7db3d88
       
   918 
       
   919   $ hg glog
       
   920   @  16:038fe7db3d88 added d
       
   921   |   () [default] draft
       
   922   o  15:b2cac10f3836 added c
       
   923   |   () [default] draft
       
   924   o  14:eadfd9d70680 added b
       
   925   |   () [default] draft
       
   926   o  13:f66f262fff6c watbar to a
       
   927   |   () [default] draft
       
   928   o  0:8fa14d15e168 added hgignore
       
   929       () [default] draft
       
   930 
       
   931 Resolving content-divergence of a stack with different parents
       
   932 ---------------------------------------------------------
       
   933 
       
   934   $ cd ..
       
   935   $ hg init stackrepo1
       
   936   $ cd stackrepo1
       
   937   $ echo ".*\.orig" > .hgignore
       
   938   $ hg add .hgignore
       
   939   $ hg ci -m "added hgignore"
       
   940 
       
   941   $ for ch in a b c d;
       
   942   > do echo foo > $ch;
       
   943   > hg add $ch;
       
   944   > hg ci -qm "added "$ch;
       
   945   > done;
       
   946 
       
   947   $ hg glog
       
   948   @  4:c41c793e0ef1 added d
       
   949   |   () [default] draft
       
   950   o  3:ca1b80f7960a added c
       
   951   |   () [default] draft
       
   952   o  2:b1661037fa25 added b
       
   953   |   () [default] draft
       
   954   o  1:c7586e2a9264 added a
       
   955   |   () [default] draft
       
   956   o  0:8fa14d15e168 added hgignore
       
   957       () [default] draft
       
   958 
       
   959   $ cd ..
       
   960   $ hg init stackrepo2
       
   961   $ cd stackrepo2
       
   962   $ hg pull ../stackrepo1
       
   963   pulling from ../stackrepo1
       
   964   requesting all changes
       
   965   adding changesets
       
   966   adding manifests
       
   967   adding file changes
       
   968   added 5 changesets with 5 changes to 5 files
       
   969   new changesets 8fa14d15e168:c41c793e0ef1 (5 drafts)
       
   970   (run 'hg update' to get a working copy)
       
   971 
       
   972   $ hg glog
       
   973   o  4:c41c793e0ef1 added d
       
   974   |   () [default] draft
       
   975   o  3:ca1b80f7960a added c
       
   976   |   () [default] draft
       
   977   o  2:b1661037fa25 added b
       
   978   |   () [default] draft
       
   979   o  1:c7586e2a9264 added a
       
   980   |   () [default] draft
       
   981   o  0:8fa14d15e168 added hgignore
       
   982       () [default] draft
       
   983 
       
   984   $ hg up 8fa14d15e168
       
   985   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   986   $ echo newfile > newfile
       
   987   $ hg ci -Am "add newfile"
       
   988   adding newfile
       
   989   created new head
       
   990   $ hg rebase -s c7586e2a9264 -d .
       
   991   rebasing 1:c7586e2a9264 "added a"
       
   992   rebasing 2:b1661037fa25 "added b"
       
   993   rebasing 3:ca1b80f7960a "added c"
       
   994   rebasing 4:c41c793e0ef1 "added d"
       
   995 
       
   996   $ hg glog
       
   997   o  9:d45f050514c2 added d
       
   998   |   () [default] draft
       
   999   o  8:8ed612937375 added c
       
  1000   |   () [default] draft
       
  1001   o  7:6eb54b5af3fb added b
       
  1002   |   () [default] draft
       
  1003   o  6:c04ff147ef79 added a
       
  1004   |   () [default] draft
       
  1005   @  5:2228e3b74514 add newfile
       
  1006   |   () [default] draft
       
  1007   o  0:8fa14d15e168 added hgignore
       
  1008       () [default] draft
       
  1009 
       
  1010   $ cd ../stackrepo1
       
  1011   $ hg up .^^^
       
  1012   0 files updated, 0 files merged, 3 files removed, 0 files unresolved
       
  1013   $ echo wat > a
       
  1014   $ hg amend -m "watbar to a"
       
  1015   3 new orphan changesets
       
  1016   $ hg evolve --all
       
  1017   move:[2] added b
       
  1018   atop:[5] watbar to a
       
  1019   move:[3] added c
       
  1020   move:[4] added d
       
  1021   working directory is now at c72d2885eb51
       
  1022 
       
  1023   $ hg glog
       
  1024   @  8:c72d2885eb51 added d
       
  1025   |   () [default] draft
       
  1026   o  7:3ce4be6d8e5e added c
       
  1027   |   () [default] draft
       
  1028   o  6:d5f148423c16 added b
       
  1029   |   () [default] draft
       
  1030   o  5:8e222f257bbf watbar to a
       
  1031   |   () [default] draft
       
  1032   o  0:8fa14d15e168 added hgignore
       
  1033       () [default] draft
       
  1034 
       
  1035   $ hg pull ../stackrepo2
       
  1036   pulling from ../stackrepo2
       
  1037   searching for changes
       
  1038   adding changesets
       
  1039   adding manifests
       
  1040   adding file changes
       
  1041   added 5 changesets with 1 changes to 5 files (+1 heads)
       
  1042   4 new obsolescence markers
       
  1043   8 new content-divergent changesets
       
  1044   new changesets 2228e3b74514:d45f050514c2 (5 drafts)
       
  1045   (run 'hg heads' to see heads, 'hg merge' to merge)
       
  1046 
       
  1047   $ hg glog
       
  1048   *  13:d45f050514c2 added d
       
  1049   |   () [default] draft
       
  1050   *  12:8ed612937375 added c
       
  1051   |   () [default] draft
       
  1052   *  11:6eb54b5af3fb added b
       
  1053   |   () [default] draft
       
  1054   *  10:c04ff147ef79 added a
       
  1055   |   () [default] draft
       
  1056   o  9:2228e3b74514 add newfile
       
  1057   |   () [default] draft
       
  1058   | @  8:c72d2885eb51 added d
       
  1059   | |   () [default] draft
       
  1060   | *  7:3ce4be6d8e5e added c
       
  1061   | |   () [default] draft
       
  1062   | *  6:d5f148423c16 added b
       
  1063   | |   () [default] draft
       
  1064   | *  5:8e222f257bbf watbar to a
       
  1065   |/    () [default] draft
       
  1066   o  0:8fa14d15e168 added hgignore
       
  1067       () [default] draft
       
  1068 
       
  1069   $ hg evolve --all --content-divergent
       
  1070   merge:[10] added a
       
  1071   with: [5] watbar to a
       
  1072   base: [1] added a
       
  1073   rebasing "other" content-divergent changeset 8e222f257bbf on 2228e3b74514
       
  1074   updating to "local" side of the conflict: c04ff147ef79
       
  1075   merging "other" content-divergent changeset '186bdc2cdfa2'
       
  1076   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  1077   6 new orphan changesets
       
  1078   merge:[11] added b
       
  1079   with: [6] added b
       
  1080   base: [2] added b
       
  1081   rebasing "other" content-divergent changeset d5f148423c16 on c04ff147ef79
       
  1082   updating to "local" side of the conflict: 6eb54b5af3fb
       
  1083   merging "other" content-divergent changeset '8542f15656e7'
       
  1084   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  1085   merge:[12] added c
       
  1086   with: [7] added c
       
  1087   base: [3] added c
       
  1088   rebasing "other" content-divergent changeset 3ce4be6d8e5e on 6eb54b5af3fb
       
  1089   updating to "local" side of the conflict: 8ed612937375
       
  1090   merging "other" content-divergent changeset 'a690ce53104a'
       
  1091   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  1092   merge:[13] added d
       
  1093   with: [8] added d
       
  1094   base: [4] added d
       
  1095   rebasing "other" content-divergent changeset c72d2885eb51 on 8ed612937375
       
  1096   updating to "local" side of the conflict: d45f050514c2
       
  1097   merging "other" content-divergent changeset '1d1772990a3b'
       
  1098   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  1099   working directory is now at 5f7a38bdb75c
       
  1100 
       
  1101   $ hg glog
       
  1102   @  21:5f7a38bdb75c added d
       
  1103   |   () [default] draft
       
  1104   o  19:9865d598f0e0 added c
       
  1105   |   () [default] draft
       
  1106   o  17:ac70b8c8eb63 added b
       
  1107   |   () [default] draft
       
  1108   o  15:74fbf3e6a0b6 watbar to a
       
  1109   |   () [default] draft
       
  1110   o  9:2228e3b74514 add newfile
       
  1111   |   () [default] draft
       
  1112   o  0:8fa14d15e168 added hgignore
       
  1113       () [default] draft
       
  1114 
       
  1115 Test to make sure that evolve don't fall into unrecoverable state (issue6053)
       
  1116 ------------------------------------------------------------------------------
       
  1117 
       
  1118 It happened when two divergent csets has different parent (need relocation)
       
  1119 and resolution parent is obsolete. So this issue triggered when during
       
  1120 relocation we hit conflicts. So lets make the repo as described.
       
  1121 
       
  1122   $ cd ..
       
  1123   $ hg init localside
       
  1124   $ cd localside
       
  1125   $ for ch in a b c d e; do
       
  1126   > echo $ch > $ch;
       
  1127   > hg add $ch;
       
  1128   > hg ci -m "added "$ch;
       
  1129   > done;
       
  1130 
       
  1131   $ hg glog
       
  1132   @  4:8d71eadcc9df added e
       
  1133   |   () [default] draft
       
  1134   o  3:9150fe93bec6 added d
       
  1135   |   () [default] draft
       
  1136   o  2:155349b645be added c
       
  1137   |   () [default] draft
       
  1138   o  1:5f6d8a4bf34a added b
       
  1139   |   () [default] draft
       
  1140   o  0:9092f1db7931 added a
       
  1141       () [default] draft
       
  1142 
       
  1143   $ echo ee > e
       
  1144   $ hg amend -m "updated e"
       
  1145   $ hg up 1 -q
       
  1146 
       
  1147 To make sure we hit conflict while relocating
       
  1148   $ echo dd > d
       
  1149   $ echo ee > e
       
  1150   $ hg add d e
       
  1151   $ hg ci -m "updated e"
       
  1152   created new head
       
  1153 
       
  1154 Lets create divergence
       
  1155   $ hg prune 4 -s . --hidden
       
  1156   1 changesets pruned
       
  1157   2 new content-divergent changesets
       
  1158 
       
  1159 Making obsolete resolution parent
       
  1160   $ hg prune 3
       
  1161   1 changesets pruned
       
  1162   1 new orphan changesets
       
  1163 
       
  1164   $ hg glog
       
  1165   @  6:de4ea3103326 updated e
       
  1166   |   () [default] draft
       
  1167   | *  5:ff6f7cd76a7c updated e
       
  1168   | |   () [default] draft
       
  1169   | x  3:9150fe93bec6 added d
       
  1170   | |   () [default] draft
       
  1171   | o  2:155349b645be added c
       
  1172   |/    () [default] draft
       
  1173   o  1:5f6d8a4bf34a added b
       
  1174   |   () [default] draft
       
  1175   o  0:9092f1db7931 added a
       
  1176       () [default] draft
       
  1177 
       
  1178   $ hg evolve --content-divergent --any
       
  1179   merge:[5] updated e
       
  1180   with: [6] updated e
       
  1181   base: [4] added e
       
  1182   rebasing "other" content-divergent changeset de4ea3103326 on 9150fe93bec6
       
  1183   merging d
       
  1184   warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
       
  1185   fix conflicts and see `hg help evolve.interrupted`
       
  1186   [1]
       
  1187 
       
  1188   $ hg diff
       
  1189   diff -r 9150fe93bec6 d
       
  1190   --- a/d	Thu Jan 01 00:00:00 1970 +0000
       
  1191   +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
  1192   @@ -1,1 +1,5 @@
       
  1193   +<<<<<<< destination: 9150fe93bec6 - test: added d
       
  1194    d
       
  1195   +=======
       
  1196   +dd
       
  1197   +>>>>>>> evolving:    de4ea3103326 - test: updated e
       
  1198   diff -r 9150fe93bec6 e
       
  1199   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1200   +++ b/e	Thu Jan 01 00:00:00 1970 +0000
       
  1201   @@ -0,0 +1,1 @@
       
  1202   +ee
       
  1203 
       
  1204   $ echo dresolved > d
       
  1205   $ hg res -m
       
  1206   (no more unresolved files)
       
  1207   continue: hg evolve --continue
       
  1208 
       
  1209   $ hg evolve --continue
       
  1210   evolving 6:de4ea3103326 "updated e"
       
  1211   updating to "local" side of the conflict: ff6f7cd76a7c
       
  1212   merging "other" content-divergent changeset 'e504bd82de7e'
       
  1213   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  1214   working directory is now at 83b1664a580f
       
  1215 
       
  1216   $ hg glog -l1
       
  1217   @  8:83b1664a580f updated e
       
  1218   |   () [default] draft
       
  1219   ~