tests/test-evolve-content-divergence.t
branchmercurial-4.7
changeset 4512 7a779a288793
parent 4359 2cbb9914d227
parent 4511 e4fc3af2d0a9
child 4513 d70db7e455dc
child 4549 dcaf340841ef
equal deleted inserted replaced
4359:2cbb9914d227 4512:7a779a288793
     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 wont
       
   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
       
   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
       
   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
       
   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