tests/test-evolve-public-content-divergent.t
branchstable
changeset 4507 de9089514833
parent 4473 14437b18b024
child 4512 7a779a288793
equal deleted inserted replaced
4486:099e0ca8285e 4507:de9089514833
       
     1 Test for handling of content divergence with public cset using `hg evolve`
       
     2 ==========================================================================
       
     3 
       
     4 Setup
       
     5 =====
       
     6   $ cat >> $HGRCPATH <<EOF
       
     7   > [alias]
       
     8   > glog = log -GT "{rev}:{node|short} {desc|firstline}\n {phase} {troubles}\n\n"
       
     9   > [phases]
       
    10   > publish = False
       
    11   > [extensions]
       
    12   > rebase =
       
    13   > EOF
       
    14   $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
       
    15 
       
    16 Testing the case when both divergent cset are on the same parent and no-conflict in merging:
       
    17 -------------------------------------------------------------------------------------
       
    18 
       
    19 Prepare the repository:
       
    20 
       
    21   $ hg init pubdiv
       
    22   $ cd pubdiv
       
    23   $ for ch in a b; do
       
    24   >   echo $ch > $ch;
       
    25   >   hg ci -Aqm "added "$ch;
       
    26   > done;
       
    27   $ hg glog
       
    28   @  1:5f6d8a4bf34a added b
       
    29   |   draft
       
    30   |
       
    31   o  0:9092f1db7931 added a
       
    32       draft
       
    33   
       
    34 
       
    35 Make an amend and change phase to public:
       
    36 
       
    37   $ sed -i "1 i I am first" b
       
    38   $ hg amend
       
    39   $ hg phase --public
       
    40 
       
    41 Amend again to create a cset divergent to public one:
       
    42 
       
    43   $ hg up 1 --hidden -q
       
    44   updated to hidden changeset 5f6d8a4bf34a
       
    45   (hidden revision '5f6d8a4bf34a' was rewritten as: 44f360db368f)
       
    46   working directory parent is obsolete! (5f6d8a4bf34a)
       
    47 
       
    48   $ echo "I am second" >> b
       
    49   $ hg ci --amend -m "updated b"
       
    50   1 new content-divergent changesets
       
    51 
       
    52   $ hg glog
       
    53   @  3:dcdaf152280a updated b
       
    54   |   draft content-divergent
       
    55   |
       
    56   | o  2:44f360db368f added b
       
    57   |/    public
       
    58   |
       
    59   o  0:9092f1db7931 added a
       
    60       public
       
    61   
       
    62 
       
    63 Lets resolve the public content-divergence:
       
    64 
       
    65   $ hg evolve --content-divergent
       
    66   merge:[2] added b
       
    67   with: [3] updated b
       
    68   base: [1] added b
       
    69   updating to "local" side of the conflict: 44f360db368f
       
    70   merging "other" content-divergent changeset 'dcdaf152280a'
       
    71   merging b
       
    72   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
       
    73   committed as c1aa9cfb6cf8
       
    74   working directory is now at c1aa9cfb6cf8
       
    75 
       
    76 Following graph log shows that it correctly merged the two divergent csets:
       
    77 
       
    78   $ hg glog -p
       
    79   @  5:c1aa9cfb6cf8 phase-divergent update to 44f360db368f:
       
    80   |   draft
       
    81   |
       
    82   |  diff -r 44f360db368f -r c1aa9cfb6cf8 b
       
    83   |  --- a/b	Thu Jan 01 00:00:00 1970 +0000
       
    84   |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
       
    85   |  @@ -1,2 +1,3 @@
       
    86   |   I am first
       
    87   |   b
       
    88   |  +I am second
       
    89   |
       
    90   o  2:44f360db368f added b
       
    91   |   public
       
    92   |
       
    93   |  diff -r 9092f1db7931 -r 44f360db368f b
       
    94   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
    95   |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
       
    96   |  @@ -0,0 +1,2 @@
       
    97   |  +I am first
       
    98   |  +b
       
    99   |
       
   100   o  0:9092f1db7931 added a
       
   101       public
       
   102   
       
   103      diff -r 000000000000 -r 9092f1db7931 a
       
   104      --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   105      +++ b/a	Thu Jan 01 00:00:00 1970 +0000
       
   106      @@ -0,0 +1,1 @@
       
   107      +a
       
   108   
       
   109   $ hg evolve -l
       
   110 
       
   111   $ cd ..
       
   112 
       
   113 Testing the case when both divergent cset has same parent and has conflict in merging:
       
   114 ------------------------------------------------------------------------------
       
   115 
       
   116 Prepare the repository:
       
   117 
       
   118   $ hg init pubdiv1
       
   119   $ cd pubdiv1
       
   120   $ for ch in a b; do
       
   121   >   echo $ch > $ch;
       
   122   >   hg ci -Aqm "added "$ch;
       
   123   > done;
       
   124   $ hg glog
       
   125   @  1:5f6d8a4bf34a added b
       
   126   |   draft
       
   127   |
       
   128   o  0:9092f1db7931 added a
       
   129       draft
       
   130   
       
   131 
       
   132 Make an amend and change phase to public:
       
   133 
       
   134   $ echo "I am foo" > b
       
   135   $ hg amend
       
   136   $ hg phase --public
       
   137 
       
   138 Amend again to create a cset divergent to public one:
       
   139 
       
   140   $ hg up 1 --hidden -q
       
   141   updated to hidden changeset 5f6d8a4bf34a
       
   142   (hidden revision '5f6d8a4bf34a' was rewritten as: 580f2d01e52c)
       
   143   working directory parent is obsolete! (5f6d8a4bf34a)
       
   144 
       
   145   $ echo "I am bar" > b
       
   146   $ hg ci --amend -m "updated b"
       
   147   1 new content-divergent changesets
       
   148 
       
   149   $ hg glog
       
   150   @  3:0e805383168e updated b
       
   151   |   draft content-divergent
       
   152   |
       
   153   | o  2:580f2d01e52c added b
       
   154   |/    public
       
   155   |
       
   156   o  0:9092f1db7931 added a
       
   157       public
       
   158   
       
   159 
       
   160 Lets resolve the divergence:
       
   161 
       
   162   $ hg evolve --content-divergent
       
   163   merge:[2] added b
       
   164   with: [3] updated b
       
   165   base: [1] added b
       
   166   updating to "local" side of the conflict: 580f2d01e52c
       
   167   merging "other" content-divergent changeset '0e805383168e'
       
   168   merging b
       
   169   warning: conflicts while merging b! (edit, then use 'hg resolve --mark')
       
   170   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
   171   fix conflicts and see `hg help evolve.interrupted`
       
   172   [1]
       
   173 
       
   174   $ echo "I am foobar" > b
       
   175   $ hg resolve -m --tool union
       
   176   (no more unresolved files)
       
   177   continue: hg evolve --continue
       
   178   $ hg evolve --continue
       
   179   committed as 1a739394e9d4
       
   180   working directory is now at 1a739394e9d4
       
   181 
       
   182   $ hg glog
       
   183   @  5:1a739394e9d4 phase-divergent update to 580f2d01e52c:
       
   184   |   draft
       
   185   |
       
   186   o  2:580f2d01e52c added b
       
   187   |   public
       
   188   |
       
   189   o  0:9092f1db7931 added a
       
   190       public
       
   191   
       
   192 Testing the case when divergence is not created by actual diff change, but because of rebasing:
       
   193 ------------------------------------------------------------------------------------------------
       
   194 
       
   195 Prepare the repo:
       
   196 
       
   197   $ cd ..
       
   198   $ hg init rebasediv
       
   199   $ cd rebasediv
       
   200   $ for ch in a b c; do
       
   201   >   echo $ch > $ch;
       
   202   >   hg ci -Am "added "$ch;
       
   203   > done;
       
   204   adding a
       
   205   adding b
       
   206   adding c
       
   207 
       
   208   $ hg glog
       
   209   @  2:155349b645be added c
       
   210   |   draft
       
   211   |
       
   212   o  1:5f6d8a4bf34a added b
       
   213   |   draft
       
   214   |
       
   215   o  0:9092f1db7931 added a
       
   216       draft
       
   217   
       
   218 
       
   219 On server side: a new cset is added based on rev 1 and rev 2 is rebased on newly added cset:
       
   220 
       
   221   $ hg up .^ -q
       
   222   $ echo d > d
       
   223   $ hg ci -Am "added d"
       
   224   adding d
       
   225   created new head
       
   226 
       
   227   $ hg rebase -r 2 -d .
       
   228   rebasing 2:155349b645be "added c"
       
   229 
       
   230   $ hg glog
       
   231   o  4:c0d7ee6604ea added c
       
   232   |   draft
       
   233   |
       
   234   @  3:c9241b0f2d5b added d
       
   235   |   draft
       
   236   |
       
   237   o  1:5f6d8a4bf34a added b
       
   238   |   draft
       
   239   |
       
   240   o  0:9092f1db7931 added a
       
   241       draft
       
   242   
       
   243 
       
   244 On user side: user has not pulled yet and amended the rev 2 which created the divergence after pull:
       
   245   $ hg up 2 --hidden -q
       
   246   updated to hidden changeset 155349b645be
       
   247   (hidden revision '155349b645be' was rewritten as: c0d7ee6604ea)
       
   248   working directory parent is obsolete! (155349b645be)
       
   249 
       
   250   $ echo cc >> c
       
   251   $ hg ci --amend -m "updated c"
       
   252   2 new content-divergent changesets
       
   253 
       
   254 Lets change the phase to --public of branch which is pulled from server:
       
   255   $ hg phase --public -r 4
       
   256   $ hg glog -p
       
   257   @  5:f5f9b4fc8b77 updated c
       
   258   |   draft content-divergent
       
   259   |
       
   260   |  diff -r 5f6d8a4bf34a -r f5f9b4fc8b77 c
       
   261   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   262   |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
       
   263   |  @@ -0,0 +1,2 @@
       
   264   |  +c
       
   265   |  +cc
       
   266   |
       
   267   | o  4:c0d7ee6604ea added c
       
   268   | |   public
       
   269   | |
       
   270   | |  diff -r c9241b0f2d5b -r c0d7ee6604ea c
       
   271   | |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   272   | |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
       
   273   | |  @@ -0,0 +1,1 @@
       
   274   | |  +c
       
   275   | |
       
   276   | o  3:c9241b0f2d5b added d
       
   277   |/    public
       
   278   |
       
   279   |    diff -r 5f6d8a4bf34a -r c9241b0f2d5b d
       
   280   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   281   |    +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
   282   |    @@ -0,0 +1,1 @@
       
   283   |    +d
       
   284   |
       
   285   o  1:5f6d8a4bf34a added b
       
   286   |   public
       
   287   |
       
   288   |  diff -r 9092f1db7931 -r 5f6d8a4bf34a b
       
   289   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   290   |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
       
   291   |  @@ -0,0 +1,1 @@
       
   292   |  +b
       
   293   |
       
   294   o  0:9092f1db7931 added a
       
   295       public
       
   296   
       
   297      diff -r 000000000000 -r 9092f1db7931 a
       
   298      --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   299      +++ b/a	Thu Jan 01 00:00:00 1970 +0000
       
   300      @@ -0,0 +1,1 @@
       
   301      +a
       
   302   
       
   303 
       
   304 Evolve:
       
   305   $ hg evolve --content-divergent
       
   306   merge:[4] added c
       
   307   with: [5] updated c
       
   308   base: [2] added c
       
   309   rebasing "other" content-divergent changeset f5f9b4fc8b77 on c9241b0f2d5b
       
   310   updating to "local" side of the conflict: c0d7ee6604ea
       
   311   merging "other" content-divergent changeset 'c3d442d80993'
       
   312   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   313   committed as 3b336cbee992
       
   314   working directory is now at 3b336cbee992
       
   315 
       
   316   $ hg glog -p
       
   317   @  8:3b336cbee992 phase-divergent update to c0d7ee6604ea:
       
   318   |   draft
       
   319   |
       
   320   |  diff -r c0d7ee6604ea -r 3b336cbee992 c
       
   321   |  --- a/c	Thu Jan 01 00:00:00 1970 +0000
       
   322   |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
       
   323   |  @@ -1,1 +1,2 @@
       
   324   |   c
       
   325   |  +cc
       
   326   |
       
   327   o  4:c0d7ee6604ea added c
       
   328   |   public
       
   329   |
       
   330   |  diff -r c9241b0f2d5b -r c0d7ee6604ea c
       
   331   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   332   |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
       
   333   |  @@ -0,0 +1,1 @@
       
   334   |  +c
       
   335   |
       
   336   o  3:c9241b0f2d5b added d
       
   337   |   public
       
   338   |
       
   339   |  diff -r 5f6d8a4bf34a -r c9241b0f2d5b d
       
   340   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   341   |  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
   342   |  @@ -0,0 +1,1 @@
       
   343   |  +d
       
   344   |
       
   345   o  1:5f6d8a4bf34a added b
       
   346   |   public
       
   347   |
       
   348   |  diff -r 9092f1db7931 -r 5f6d8a4bf34a b
       
   349   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   350   |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
       
   351   |  @@ -0,0 +1,1 @@
       
   352   |  +b
       
   353   |
       
   354   o  0:9092f1db7931 added a
       
   355       public
       
   356   
       
   357      diff -r 000000000000 -r 9092f1db7931 a
       
   358      --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   359      +++ b/a	Thu Jan 01 00:00:00 1970 +0000
       
   360      @@ -0,0 +1,1 @@
       
   361      +a
       
   362   
       
   363 Check that we don't have any unstable cset now:
       
   364   $ hg evolve -l
       
   365   $ cd ..
       
   366 
       
   367 Testing the case when csets are on different parent and no conflict in relocation and merging:
       
   368 ----------------------------------------------------------------------------------------------
       
   369 
       
   370   $ hg init pubdiv2
       
   371   $ cd pubdiv2
       
   372   $ for ch in a b c d; do
       
   373   >   echo $ch > $ch;
       
   374   >   hg ci -Aqm "added "$ch;
       
   375   > done;
       
   376 
       
   377   $ hg up .^
       
   378   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   379   $ echo dd > d
       
   380   $ hg add d
       
   381   $ hg ci -m "added d"
       
   382   created new head
       
   383 
       
   384   $ hg up 1
       
   385   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   386   $ echo dd > d
       
   387   $ echo e > e
       
   388   $ hg add d e
       
   389   $ hg ci -m "added d e"
       
   390   created new head
       
   391 
       
   392   $ hg glog
       
   393   @  5:4291d72ee19a added d e
       
   394   |   draft
       
   395   |
       
   396   | o  4:93cd84bbdaca added d
       
   397   | |   draft
       
   398   | |
       
   399   | | o  3:9150fe93bec6 added d
       
   400   | |/    draft
       
   401   | |
       
   402   | o  2:155349b645be added c
       
   403   |/    draft
       
   404   |
       
   405   o  1:5f6d8a4bf34a added b
       
   406   |   draft
       
   407   |
       
   408   o  0:9092f1db7931 added a
       
   409       draft
       
   410   
       
   411 
       
   412   $ hg prune 3 -s 5
       
   413   1 changesets pruned
       
   414   $ hg prune 3 -s 4 --hidden
       
   415   1 changesets pruned
       
   416   2 new content-divergent changesets
       
   417 
       
   418 Change phase to public for one head:
       
   419   $ hg phase -r 4 --public
       
   420 
       
   421   $ hg glog
       
   422   @  5:4291d72ee19a added d e
       
   423   |   draft content-divergent
       
   424   |
       
   425   | o  4:93cd84bbdaca added d
       
   426   | |   public
       
   427   | |
       
   428   | o  2:155349b645be added c
       
   429   |/    public
       
   430   |
       
   431   o  1:5f6d8a4bf34a added b
       
   432   |   public
       
   433   |
       
   434   o  0:9092f1db7931 added a
       
   435       public
       
   436   
       
   437 
       
   438   $ hg evolve --content-divergent --any
       
   439   merge:[4] added d
       
   440   with: [5] added d e
       
   441   base: [3] added d
       
   442   rebasing "other" content-divergent changeset 4291d72ee19a on 155349b645be
       
   443   updating to "local" side of the conflict: 93cd84bbdaca
       
   444   merging "other" content-divergent changeset 'f88581407163'
       
   445   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   446   committed as 4cbe48a0c3d9
       
   447   working directory is now at 4cbe48a0c3d9
       
   448 
       
   449   $ hg glog -l 1
       
   450   @  8:4cbe48a0c3d9 phase-divergent update to 93cd84bbdaca:
       
   451   |   draft
       
   452   ~
       
   453 
       
   454   $ hg evolve -l
       
   455   $ cd ..
       
   456 
       
   457 Different parents, relocation conflict
       
   458 --------------------------------------
       
   459 
       
   460 Testing the case when csets are on different parent and conflict in relocation
       
   461 but not in merging.
       
   462 
       
   463   $ hg init pubdiv3
       
   464   $ cd pubdiv3
       
   465   $ for ch in a b c d; do
       
   466   >   echo $ch > $ch;
       
   467   >   hg ci -Aqm "added "$ch;
       
   468   > done;
       
   469 
       
   470   $ hg up .^^
       
   471   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   472   $ echo d > d
       
   473   $ echo cfoo > c
       
   474   $ echo e > e
       
   475   $ hg add d c e
       
   476   $ hg ci -m "added d c e"
       
   477   created new head
       
   478 
       
   479   $ hg up 'desc("added c")'
       
   480   1 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   481   $ echo dd > d
       
   482   $ hg add d
       
   483   $ hg ci -m "added d"
       
   484   created new head
       
   485 
       
   486   $ hg glog
       
   487   @  5:93cd84bbdaca added d
       
   488   |   draft
       
   489   |
       
   490   | o  4:f31bcc378766 added d c e
       
   491   | |   draft
       
   492   | |
       
   493   +---o  3:9150fe93bec6 added d
       
   494   | |     draft
       
   495   | |
       
   496   o |  2:155349b645be added c
       
   497   |/    draft
       
   498   |
       
   499   o  1:5f6d8a4bf34a added b
       
   500   |   draft
       
   501   |
       
   502   o  0:9092f1db7931 added a
       
   503       draft
       
   504   
       
   505   $ hg prune 'min(desc("re:added d$"))' -s 'max(desc("re:added d$"))'
       
   506   1 changesets pruned
       
   507   $ hg prune 'min(desc("re:added d$"))' -s 'desc("added d c e")' --hidden
       
   508   1 changesets pruned
       
   509   2 new content-divergent changesets
       
   510 
       
   511 Change phase to public for one head:
       
   512   $ hg phase --public -r 'max(desc("re:added d$"))'
       
   513 
       
   514   $ hg glog
       
   515   @  5:93cd84bbdaca added d
       
   516   |   public
       
   517   |
       
   518   | *  4:f31bcc378766 added d c e
       
   519   | |   draft content-divergent
       
   520   | |
       
   521   o |  2:155349b645be added c
       
   522   |/    public
       
   523   |
       
   524   o  1:5f6d8a4bf34a added b
       
   525   |   public
       
   526   |
       
   527   o  0:9092f1db7931 added a
       
   528       public
       
   529   
       
   530   $ hg evolve --content-divergent --any
       
   531   merge:[5] added d
       
   532   with: [4] added d c e
       
   533   base: [3] added d
       
   534   rebasing "other" content-divergent changeset f31bcc378766 on 155349b645be
       
   535   merging c
       
   536   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
   537   fix conflicts and see `hg help evolve.interrupted`
       
   538   [1]
       
   539 
       
   540   $ hg diff
       
   541   diff -r 155349b645be c
       
   542   --- a/c	Thu Jan 01 00:00:00 1970 +0000
       
   543   +++ b/c	Thu Jan 01 00:00:00 1970 +0000
       
   544   @@ -1,1 +1,5 @@
       
   545   +<<<<<<< destination: 155349b645be - test: added c
       
   546    c
       
   547   +=======
       
   548   +cfoo
       
   549   +>>>>>>> evolving:    f31bcc378766 - test: added d c e
       
   550   diff -r 155349b645be d
       
   551   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   552   +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
   553   @@ -0,0 +1,1 @@
       
   554   +d
       
   555   diff -r 155349b645be e
       
   556   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   557   +++ b/e	Thu Jan 01 00:00:00 1970 +0000
       
   558   @@ -0,0 +1,1 @@
       
   559   +e
       
   560 
       
   561   $ echo c > c
       
   562   $ hg res -m
       
   563   (no more unresolved files)
       
   564   continue: hg evolve --continue
       
   565 
       
   566   $ hg evolve --continue
       
   567   evolving 4:f31bcc378766 "added d c e"
       
   568   updating to "local" side of the conflict: 93cd84bbdaca
       
   569   merging "other" content-divergent changeset 'bd28d3e4a228'
       
   570   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   571   committed as 412dde898967
       
   572   working directory is now at 412dde898967
       
   573   $ hg export
       
   574   # HG changeset patch
       
   575   # User test
       
   576   # Date 0 0
       
   577   #      Thu Jan 01 00:00:00 1970 +0000
       
   578   # Node ID 412dde898967b50e7d334aefff778a9af46d29d1
       
   579   # Parent  93cd84bbdacaeb8f881c29a609dbdd30c38cbc57
       
   580   phase-divergent update to 93cd84bbdaca:
       
   581   
       
   582   added d c e
       
   583   
       
   584   diff -r 93cd84bbdaca -r 412dde898967 e
       
   585   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   586   +++ b/e	Thu Jan 01 00:00:00 1970 +0000
       
   587   @@ -0,0 +1,1 @@
       
   588   +e
       
   589 
       
   590   $ hg evolve -l
       
   591   $ cd ..
       
   592 
       
   593 Testing the case when merging leads to conflicts but relocation won't:
       
   594 ---------------------------------------------------------------------
       
   595 
       
   596   $ hg init pubdiv3.5
       
   597   $ cd pubdiv3.5
       
   598   $ for ch in a b c d; do
       
   599   >   echo $ch > $ch;
       
   600   >   hg ci -Aqm "added "$ch;
       
   601   > done;
       
   602 
       
   603   $ hg up .^^
       
   604   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   605   $ echo dconflict > d
       
   606   $ hg add d
       
   607   $ hg ci -m "added d"
       
   608   created new head
       
   609 
       
   610   $ hg up 2
       
   611   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   612   $ echo dd > d
       
   613   $ hg add d
       
   614   $ hg ci -m "added d"
       
   615   created new head
       
   616 
       
   617   $ hg glog
       
   618   @  5:93cd84bbdaca added d
       
   619   |   draft
       
   620   |
       
   621   | o  4:9411ad1fe615 added d
       
   622   | |   draft
       
   623   | |
       
   624   +---o  3:9150fe93bec6 added d
       
   625   | |     draft
       
   626   | |
       
   627   o |  2:155349b645be added c
       
   628   |/    draft
       
   629   |
       
   630   o  1:5f6d8a4bf34a added b
       
   631   |   draft
       
   632   |
       
   633   o  0:9092f1db7931 added a
       
   634       draft
       
   635   
       
   636   $ hg prune 3 -s 5
       
   637   1 changesets pruned
       
   638   $ hg prune 3 -s 4 --hidden
       
   639   1 changesets pruned
       
   640   2 new content-divergent changesets
       
   641 
       
   642 Change phase to public for one head:
       
   643   $ hg phase --public -r 5
       
   644 
       
   645   $ hg glog
       
   646   @  5:93cd84bbdaca added d
       
   647   |   public
       
   648   |
       
   649   | *  4:9411ad1fe615 added d
       
   650   | |   draft content-divergent
       
   651   | |
       
   652   o |  2:155349b645be added c
       
   653   |/    public
       
   654   |
       
   655   o  1:5f6d8a4bf34a added b
       
   656   |   public
       
   657   |
       
   658   o  0:9092f1db7931 added a
       
   659       public
       
   660   
       
   661   $ hg evolve --content-divergent --any
       
   662   merge:[5] added d
       
   663   with: [4] added d
       
   664   base: [3] added d
       
   665   rebasing "other" content-divergent changeset 9411ad1fe615 on 155349b645be
       
   666   updating to "local" side of the conflict: 93cd84bbdaca
       
   667   merging "other" content-divergent changeset 'b5c690cdf1d5'
       
   668   merging d
       
   669   warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
       
   670   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
   671   fix conflicts and see `hg help evolve.interrupted`
       
   672   [1]
       
   673 
       
   674   $ echo d > d
       
   675   $ hg res -m
       
   676   (no more unresolved files)
       
   677   continue: hg evolve --continue
       
   678 
       
   679   $ hg evolve --continue
       
   680   committed as 2a0f44767904
       
   681   working directory is now at 2a0f44767904
       
   682 
       
   683   $ hg evolve -l
       
   684   $ cd ..
       
   685 
       
   686 Testing the case when relocation and merging both leads to conflicts:
       
   687 --------------------------------------------------------------------
       
   688 
       
   689   $ hg init pubdiv4
       
   690   $ cd pubdiv4
       
   691   $ for ch in a b c d; do
       
   692   >   echo $ch > $ch;
       
   693   >   hg ci -Aqm "added "$ch;
       
   694   > done;
       
   695 
       
   696   $ hg up .^^
       
   697   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   698   $ echo cfoo > c
       
   699   $ echo e > e
       
   700   $ echo dconflict > d
       
   701   $ hg add c e d
       
   702   $ hg ci -m "added c e"
       
   703   created new head
       
   704 
       
   705   $ hg up 2
       
   706   1 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   707   $ echo dd > d
       
   708   $ hg add d
       
   709   $ hg ci -m "added d"
       
   710   created new head
       
   711 
       
   712   $ hg glog
       
   713   @  5:93cd84bbdaca added d
       
   714   |   draft
       
   715   |
       
   716   | o  4:3c17c7afaf6e added c e
       
   717   | |   draft
       
   718   | |
       
   719   +---o  3:9150fe93bec6 added d
       
   720   | |     draft
       
   721   | |
       
   722   o |  2:155349b645be added c
       
   723   |/    draft
       
   724   |
       
   725   o  1:5f6d8a4bf34a added b
       
   726   |   draft
       
   727   |
       
   728   o  0:9092f1db7931 added a
       
   729       draft
       
   730   
       
   731   $ hg prune 3 -s 5
       
   732   1 changesets pruned
       
   733   $ hg prune 3 -s 4 --hidden
       
   734   1 changesets pruned
       
   735   2 new content-divergent changesets
       
   736 
       
   737 Change phase to public for one head:
       
   738   $ hg phase --public -r 5
       
   739 
       
   740   $ hg glog
       
   741   @  5:93cd84bbdaca added d
       
   742   |   public
       
   743   |
       
   744   | *  4:3c17c7afaf6e added c e
       
   745   | |   draft content-divergent
       
   746   | |
       
   747   o |  2:155349b645be added c
       
   748   |/    public
       
   749   |
       
   750   o  1:5f6d8a4bf34a added b
       
   751   |   public
       
   752   |
       
   753   o  0:9092f1db7931 added a
       
   754       public
       
   755   
       
   756   $ hg evolve --content-divergent --any
       
   757   merge:[5] added d
       
   758   with: [4] added c e
       
   759   base: [3] added d
       
   760   rebasing "other" content-divergent changeset 3c17c7afaf6e on 155349b645be
       
   761   merging c
       
   762   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
   763   fix conflicts and see `hg help evolve.interrupted`
       
   764   [1]
       
   765 
       
   766   $ hg diff
       
   767   diff -r 155349b645be c
       
   768   --- a/c	Thu Jan 01 00:00:00 1970 +0000
       
   769   +++ b/c	Thu Jan 01 00:00:00 1970 +0000
       
   770   @@ -1,1 +1,5 @@
       
   771   +<<<<<<< destination: 155349b645be - test: added c
       
   772    c
       
   773   +=======
       
   774   +cfoo
       
   775   +>>>>>>> evolving:    3c17c7afaf6e - test: added c e
       
   776   diff -r 155349b645be d
       
   777   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   778   +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
   779   @@ -0,0 +1,1 @@
       
   780   +dconflict
       
   781   diff -r 155349b645be e
       
   782   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   783   +++ b/e	Thu Jan 01 00:00:00 1970 +0000
       
   784   @@ -0,0 +1,1 @@
       
   785   +e
       
   786 
       
   787   $ echo cfoo > c
       
   788   $ hg res -m
       
   789   (no more unresolved files)
       
   790   continue: hg evolve --continue
       
   791 
       
   792   $ hg evolve --continue
       
   793   evolving 4:3c17c7afaf6e "added c e"
       
   794   updating to "local" side of the conflict: 93cd84bbdaca
       
   795   merging "other" content-divergent changeset 'c4ce3d34e784'
       
   796   merging d
       
   797   warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
       
   798   2 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
   799   fix conflicts and see `hg help evolve.interrupted`
       
   800   [1]
       
   801 
       
   802   $ echo d > d
       
   803   $ hg res -m
       
   804   (no more unresolved files)
       
   805   continue: hg evolve --continue
       
   806 
       
   807   $ hg evolve --continue
       
   808   committed as b9082a9e66ce
       
   809   working directory is now at b9082a9e66ce
       
   810 
       
   811   $ hg evolve -l
       
   812   $ cd ..
       
   813 
       
   814 Different parent, simple conflict on relocate, deleted file on actual merge
       
   815 ---------------------------------------------------------------------------
       
   816 
       
   817 Changeset "added c e" is also removing 'd'. This should conflict with the update
       
   818 to 'd' in the successors of 'adding d' when solving the content divergence.
       
   819 
       
   820   $ hg init pubdiv-parent-deleted-file
       
   821   $ cd pubdiv-parent-deleted-file
       
   822   $ for ch in a b c d; do
       
   823   >   echo $ch > $ch;
       
   824   >   hg ci -Aqm "added "$ch;
       
   825   > done;
       
   826 
       
   827   $ hg up 'desc("added b")'
       
   828   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   829   $ echo cfoo > c
       
   830   $ echo e > e
       
   831   $ hg add c e
       
   832   $ hg ci -m "added c e"
       
   833   created new head
       
   834 
       
   835   $ hg up 'desc("re:added c$")'
       
   836   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   837   $ echo dd > d
       
   838   $ hg add d
       
   839   $ hg ci -m "added d"
       
   840   created new head
       
   841 
       
   842   $ hg glog --patch --rev 'sort(all(), "topo")'
       
   843   @  5:93cd84bbdaca added d
       
   844   |   draft
       
   845   |
       
   846   |  diff -r 155349b645be -r 93cd84bbdaca d
       
   847   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   848   |  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
   849   |  @@ -0,0 +1,1 @@
       
   850   |  +dd
       
   851   |
       
   852   | o  3:9150fe93bec6 added d
       
   853   |/    draft
       
   854   |
       
   855   |    diff -r 155349b645be -r 9150fe93bec6 d
       
   856   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   857   |    +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
   858   |    @@ -0,0 +1,1 @@
       
   859   |    +d
       
   860   |
       
   861   o  2:155349b645be added c
       
   862   |   draft
       
   863   |
       
   864   |  diff -r 5f6d8a4bf34a -r 155349b645be c
       
   865   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   866   |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
       
   867   |  @@ -0,0 +1,1 @@
       
   868   |  +c
       
   869   |
       
   870   | o  4:e568fd1029bb added c e
       
   871   |/    draft
       
   872   |
       
   873   |    diff -r 5f6d8a4bf34a -r e568fd1029bb c
       
   874   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   875   |    +++ b/c	Thu Jan 01 00:00:00 1970 +0000
       
   876   |    @@ -0,0 +1,1 @@
       
   877   |    +cfoo
       
   878   |    diff -r 5f6d8a4bf34a -r e568fd1029bb e
       
   879   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   880   |    +++ b/e	Thu Jan 01 00:00:00 1970 +0000
       
   881   |    @@ -0,0 +1,1 @@
       
   882   |    +e
       
   883   |
       
   884   o  1:5f6d8a4bf34a added b
       
   885   |   draft
       
   886   |
       
   887   |  diff -r 9092f1db7931 -r 5f6d8a4bf34a b
       
   888   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   889   |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
       
   890   |  @@ -0,0 +1,1 @@
       
   891   |  +b
       
   892   |
       
   893   o  0:9092f1db7931 added a
       
   894       draft
       
   895   
       
   896      diff -r 000000000000 -r 9092f1db7931 a
       
   897      --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   898      +++ b/a	Thu Jan 01 00:00:00 1970 +0000
       
   899      @@ -0,0 +1,1 @@
       
   900      +a
       
   901   
       
   902   $ hg prune 'min(desc("added d"))' -s 'max(desc("added d"))'
       
   903   1 changesets pruned
       
   904   $ hg prune 'min(desc("added d"))' -s 'desc("added c e")' --hidden
       
   905   1 changesets pruned
       
   906   2 new content-divergent changesets
       
   907 
       
   908 Change phase to public for one head:
       
   909   $ hg phase --public -r 'max(desc("added d"))'
       
   910 
       
   911   $ hg glog
       
   912   @  5:93cd84bbdaca added d
       
   913   |   public
       
   914   |
       
   915   | *  4:e568fd1029bb added c e
       
   916   | |   draft content-divergent
       
   917   | |
       
   918   o |  2:155349b645be added c
       
   919   |/    public
       
   920   |
       
   921   o  1:5f6d8a4bf34a added b
       
   922   |   public
       
   923   |
       
   924   o  0:9092f1db7931 added a
       
   925       public
       
   926   
       
   927 
       
   928   $ hg glog --patch --rev 'sort(all(), "topo")' --hidden
       
   929   @  5:93cd84bbdaca added d
       
   930   |   public
       
   931   |
       
   932   |  diff -r 155349b645be -r 93cd84bbdaca d
       
   933   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   934   |  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
   935   |  @@ -0,0 +1,1 @@
       
   936   |  +dd
       
   937   |
       
   938   | x  3:9150fe93bec6 added d
       
   939   |/    draft
       
   940   |
       
   941   |    diff -r 155349b645be -r 9150fe93bec6 d
       
   942   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   943   |    +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
   944   |    @@ -0,0 +1,1 @@
       
   945   |    +d
       
   946   |
       
   947   o  2:155349b645be added c
       
   948   |   public
       
   949   |
       
   950   |  diff -r 5f6d8a4bf34a -r 155349b645be c
       
   951   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   952   |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
       
   953   |  @@ -0,0 +1,1 @@
       
   954   |  +c
       
   955   |
       
   956   | *  4:e568fd1029bb added c e
       
   957   |/    draft content-divergent
       
   958   |
       
   959   |    diff -r 5f6d8a4bf34a -r e568fd1029bb c
       
   960   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   961   |    +++ b/c	Thu Jan 01 00:00:00 1970 +0000
       
   962   |    @@ -0,0 +1,1 @@
       
   963   |    +cfoo
       
   964   |    diff -r 5f6d8a4bf34a -r e568fd1029bb e
       
   965   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   966   |    +++ b/e	Thu Jan 01 00:00:00 1970 +0000
       
   967   |    @@ -0,0 +1,1 @@
       
   968   |    +e
       
   969   |
       
   970   o  1:5f6d8a4bf34a added b
       
   971   |   public
       
   972   |
       
   973   |  diff -r 9092f1db7931 -r 5f6d8a4bf34a b
       
   974   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   975   |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
       
   976   |  @@ -0,0 +1,1 @@
       
   977   |  +b
       
   978   |
       
   979   o  0:9092f1db7931 added a
       
   980       public
       
   981   
       
   982      diff -r 000000000000 -r 9092f1db7931 a
       
   983      --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   984      +++ b/a	Thu Jan 01 00:00:00 1970 +0000
       
   985      @@ -0,0 +1,1 @@
       
   986      +a
       
   987   
       
   988 
       
   989   $ hg obslog --all --rev tip --patch
       
   990   @  93cd84bbdaca (5) added d
       
   991   |
       
   992   | *  e568fd1029bb (4) added c e
       
   993   |/
       
   994   x  9150fe93bec6 (3) added d
       
   995        rewritten(content) as 93cd84bbdaca using prune by test (Thu Jan 01 00:00:00 1970 +0000)
       
   996          diff -r 9150fe93bec6 -r 93cd84bbdaca d
       
   997          --- a/d	Thu Jan 01 00:00:00 1970 +0000
       
   998          +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
   999          @@ -1,1 +1,1 @@
       
  1000          -d
       
  1001          +dd
       
  1002   
       
  1003        rewritten(description, parent, content) as e568fd1029bb using prune by test (Thu Jan 01 00:00:00 1970 +0000)
       
  1004          (No patch available, changesets rebased)
       
  1005   
       
  1006 
       
  1007   $ hg evolve --content-divergent --any
       
  1008   merge:[5] added d
       
  1009   with: [4] added c e
       
  1010   base: [3] added d
       
  1011   rebasing "other" content-divergent changeset e568fd1029bb on 155349b645be
       
  1012   merging c
       
  1013   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
  1014   fix conflicts and see `hg help evolve.interrupted`
       
  1015   [1]
       
  1016 
       
  1017   $ hg diff
       
  1018   diff -r 155349b645be c
       
  1019   --- a/c	Thu Jan 01 00:00:00 1970 +0000
       
  1020   +++ b/c	Thu Jan 01 00:00:00 1970 +0000
       
  1021   @@ -1,1 +1,5 @@
       
  1022   +<<<<<<< destination: 155349b645be - test: added c
       
  1023    c
       
  1024   +=======
       
  1025   +cfoo
       
  1026   +>>>>>>> evolving:    e568fd1029bb - test: added c e
       
  1027   diff -r 155349b645be e
       
  1028   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1029   +++ b/e	Thu Jan 01 00:00:00 1970 +0000
       
  1030   @@ -0,0 +1,1 @@
       
  1031   +e
       
  1032 
       
  1033   $ echo c > c
       
  1034   $ hg res -m
       
  1035   (no more unresolved files)
       
  1036   continue: hg evolve --continue
       
  1037 
       
  1038   $ hg evolve --continue
       
  1039   evolving 4:e568fd1029bb "added c e"
       
  1040   updating to "local" side of the conflict: 93cd84bbdaca
       
  1041   merging "other" content-divergent changeset '2af3359250d3'
       
  1042   file 'd' was deleted in other but was modified in local.
       
  1043   What do you want to do?
       
  1044   use (c)hanged version, (d)elete, or leave (u)nresolved? u
       
  1045   1 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
  1046   fix conflicts and see `hg help evolve.interrupted`
       
  1047   [1]
       
  1048 
       
  1049   $ hg sum
       
  1050   parent: 5:93cd84bbdaca 
       
  1051    added d
       
  1052   parent: 6:2af3359250d3 tip (content-divergent)
       
  1053    added c e
       
  1054   branch: default
       
  1055   commit: 1 modified, 1 unknown, 1 unresolved (merge)
       
  1056   update: (current)
       
  1057   phases: 1 draft
       
  1058   content-divergent: 1 changesets
       
  1059   evolve: (evolve --continue)
       
  1060 
       
  1061   $ echo resolved > d
       
  1062   $ hg resolve -m d
       
  1063   (no more unresolved files)
       
  1064   continue: hg evolve --continue
       
  1065 
       
  1066   $ hg evolve --continue
       
  1067   committed as bc1f4610744c
       
  1068   working directory is now at bc1f4610744c
       
  1069 
       
  1070   $ hg export
       
  1071   # HG changeset patch
       
  1072   # User test
       
  1073   # Date 0 0
       
  1074   #      Thu Jan 01 00:00:00 1970 +0000
       
  1075   # Node ID bc1f4610744c6aa0e851d3876a61bfff6243b31c
       
  1076   # Parent  93cd84bbdacaeb8f881c29a609dbdd30c38cbc57
       
  1077   phase-divergent update to 93cd84bbdaca:
       
  1078   
       
  1079   added c e
       
  1080   
       
  1081   diff -r 93cd84bbdaca -r bc1f4610744c d
       
  1082   --- a/d	Thu Jan 01 00:00:00 1970 +0000
       
  1083   +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
  1084   @@ -1,1 +1,1 @@
       
  1085   -dd
       
  1086   +resolved
       
  1087   diff -r 93cd84bbdaca -r bc1f4610744c e
       
  1088   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1089   +++ b/e	Thu Jan 01 00:00:00 1970 +0000
       
  1090   @@ -0,0 +1,1 @@
       
  1091   +e
       
  1092 
       
  1093   $ hg evolve -l
       
  1094   $ cd ..
       
  1095 
       
  1096 Testing the case when "merging results in same as public cset" where:
       
  1097 both the csets are on same parent and no conflict in merging.
       
  1098 ---------------------------------------------------------------------
       
  1099 
       
  1100 Prepare the repo:
       
  1101 
       
  1102   $ hg init pubdiv5
       
  1103   $ cd pubdiv5
       
  1104   $ for ch in a b c; do
       
  1105   >   echo $ch > $ch;
       
  1106   >   hg ci -Am "added "$ch;
       
  1107   > done;
       
  1108   adding a
       
  1109   adding b
       
  1110   adding c
       
  1111 
       
  1112   $ hg up .^
       
  1113   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
  1114   $ echo ch > ch
       
  1115   $ hg add ch
       
  1116   $ hg ci -m "added ch"
       
  1117   created new head
       
  1118 
       
  1119   $ hg up .^
       
  1120   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
  1121   $ echo ch > ch
       
  1122   $ hg add ch
       
  1123   $ hg ci -m "added c"
       
  1124   created new head
       
  1125 
       
  1126   $ hg glog
       
  1127   @  4:f7c1071f1e7c added c
       
  1128   |   draft
       
  1129   |
       
  1130   | o  3:90522bccf499 added ch
       
  1131   |/    draft
       
  1132   |
       
  1133   | o  2:155349b645be added c
       
  1134   |/    draft
       
  1135   |
       
  1136   o  1:5f6d8a4bf34a added b
       
  1137   |   draft
       
  1138   |
       
  1139   o  0:9092f1db7931 added a
       
  1140       draft
       
  1141   
       
  1142 
       
  1143   $ hg prune 2 -s 3
       
  1144   1 changesets pruned
       
  1145   $ hg prune 2 -s 4 --hidden
       
  1146   1 changesets pruned
       
  1147   2 new content-divergent changesets
       
  1148   $ hg phase --public -r 4
       
  1149 
       
  1150   $ hg glog
       
  1151   @  4:f7c1071f1e7c added c
       
  1152   |   public
       
  1153   |
       
  1154   | *  3:90522bccf499 added ch
       
  1155   |/    draft content-divergent
       
  1156   |
       
  1157   o  1:5f6d8a4bf34a added b
       
  1158   |   public
       
  1159   |
       
  1160   o  0:9092f1db7931 added a
       
  1161       public
       
  1162   
       
  1163   $ hg evolve --content-divergent --any
       
  1164   merge:[4] added c
       
  1165   with: [3] added ch
       
  1166   base: [2] added c
       
  1167   merging "other" content-divergent changeset '90522bccf499'
       
  1168   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  1169   content-divergent changesets differ by descriptions only, discarding 90522bccf499
       
  1170 
       
  1171   $ hg evolve -l
       
  1172 
       
  1173   $ hg par
       
  1174   changeset:   4:f7c1071f1e7c
       
  1175   tag:         tip
       
  1176   parent:      1:5f6d8a4bf34a
       
  1177   user:        test
       
  1178   date:        Thu Jan 01 00:00:00 1970 +0000
       
  1179   summary:     added c
       
  1180   
       
  1181 
       
  1182 Testing the case when "merging results in same as public cset" where:
       
  1183 both the csets are on different parent and no conflict in merging and relocation.
       
  1184 ---------------------------------------------------------------------------------
       
  1185 
       
  1186 Prepare the repo:
       
  1187 
       
  1188   $ cd ..
       
  1189   $ hg init pubdiv6
       
  1190   $ cd pubdiv6
       
  1191   $ for ch in a b c d; do
       
  1192   >   echo $ch > $ch;
       
  1193   >   hg ci -Am "added "$ch;
       
  1194   > done;
       
  1195   adding a
       
  1196   adding b
       
  1197   adding c
       
  1198   adding d
       
  1199 
       
  1200   $ hg up 1
       
  1201   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
  1202   $ echo dh > dh
       
  1203   $ hg add dh
       
  1204   $ hg ci -m "added dh"
       
  1205   created new head
       
  1206 
       
  1207   $ hg up 2
       
  1208   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
  1209   $ echo dh > dh
       
  1210   $ hg add dh
       
  1211   $ hg ci -m "added d"
       
  1212   created new head
       
  1213 
       
  1214   $ hg glog
       
  1215   @  5:e800202333a4 added d
       
  1216   |   draft
       
  1217   |
       
  1218   | o  4:5acd58ef5066 added dh
       
  1219   | |   draft
       
  1220   | |
       
  1221   +---o  3:9150fe93bec6 added d
       
  1222   | |     draft
       
  1223   | |
       
  1224   o |  2:155349b645be added c
       
  1225   |/    draft
       
  1226   |
       
  1227   o  1:5f6d8a4bf34a added b
       
  1228   |   draft
       
  1229   |
       
  1230   o  0:9092f1db7931 added a
       
  1231       draft
       
  1232   
       
  1233 
       
  1234   $ hg prune 3 -s 4
       
  1235   1 changesets pruned
       
  1236   $ hg prune 3 -s 5 --hidden
       
  1237   1 changesets pruned
       
  1238   2 new content-divergent changesets
       
  1239   $ hg phase --public -r 5
       
  1240 
       
  1241   $ hg glog
       
  1242   @  5:e800202333a4 added d
       
  1243   |   public
       
  1244   |
       
  1245   | *  4:5acd58ef5066 added dh
       
  1246   | |   draft content-divergent
       
  1247   | |
       
  1248   o |  2:155349b645be added c
       
  1249   |/    public
       
  1250   |
       
  1251   o  1:5f6d8a4bf34a added b
       
  1252   |   public
       
  1253   |
       
  1254   o  0:9092f1db7931 added a
       
  1255       public
       
  1256   
       
  1257   $ hg evolve --content-divergent --any
       
  1258   merge:[5] added d
       
  1259   with: [4] added dh
       
  1260   base: [3] added d
       
  1261   rebasing "other" content-divergent changeset 5acd58ef5066 on 155349b645be
       
  1262   updating to "local" side of the conflict: e800202333a4
       
  1263   merging "other" content-divergent changeset 'ae3429430ef1'
       
  1264   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  1265   content-divergent changesets differ by descriptions only, discarding ae3429430ef1
       
  1266 
       
  1267   $ hg evolve -l
       
  1268 
       
  1269   $ hg par
       
  1270   changeset:   5:e800202333a4
       
  1271   tag:         tip
       
  1272   parent:      2:155349b645be
       
  1273   user:        test
       
  1274   date:        Thu Jan 01 00:00:00 1970 +0000
       
  1275   summary:     added d
       
  1276   
       
  1277 Testing the case when "merging results in same as public cset" where:
       
  1278 both the csets are on same parent and merging leads to conflict.
       
  1279 ---------------------------------------------------------------------
       
  1280 
       
  1281 Prepare the repo:
       
  1282 
       
  1283   $ cd ..
       
  1284   $ hg init pubdiv7
       
  1285   $ cd pubdiv7
       
  1286   $ for ch in a b c; do
       
  1287   >   echo $ch > $ch;
       
  1288   >   hg ci -Am "added "$ch;
       
  1289   > done;
       
  1290   adding a
       
  1291   adding b
       
  1292   adding c
       
  1293 
       
  1294   $ hg up .^
       
  1295   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
  1296   $ echo chconflict > ch
       
  1297   $ hg add ch
       
  1298   $ hg ci -m "added ch"
       
  1299   created new head
       
  1300 
       
  1301   $ hg up .^
       
  1302   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
  1303   $ echo ch > ch
       
  1304   $ hg add ch
       
  1305   $ hg ci -m "added c"
       
  1306   created new head
       
  1307 
       
  1308   $ hg glog
       
  1309   @  4:f7c1071f1e7c added c
       
  1310   |   draft
       
  1311   |
       
  1312   | o  3:229da2719b19 added ch
       
  1313   |/    draft
       
  1314   |
       
  1315   | o  2:155349b645be added c
       
  1316   |/    draft
       
  1317   |
       
  1318   o  1:5f6d8a4bf34a added b
       
  1319   |   draft
       
  1320   |
       
  1321   o  0:9092f1db7931 added a
       
  1322       draft
       
  1323   
       
  1324 
       
  1325   $ hg prune 2 -s 3
       
  1326   1 changesets pruned
       
  1327   $ hg prune 2 -s 4 --hidden
       
  1328   1 changesets pruned
       
  1329   2 new content-divergent changesets
       
  1330   $ hg phase --public -r 4
       
  1331 
       
  1332   $ hg glog
       
  1333   @  4:f7c1071f1e7c added c
       
  1334   |   public
       
  1335   |
       
  1336   | *  3:229da2719b19 added ch
       
  1337   |/    draft content-divergent
       
  1338   |
       
  1339   o  1:5f6d8a4bf34a added b
       
  1340   |   public
       
  1341   |
       
  1342   o  0:9092f1db7931 added a
       
  1343       public
       
  1344   
       
  1345   $ hg evolve --content-divergent --any
       
  1346   merge:[4] added c
       
  1347   with: [3] added ch
       
  1348   base: [2] added c
       
  1349   merging "other" content-divergent changeset '229da2719b19'
       
  1350   merging ch
       
  1351   warning: conflicts while merging ch! (edit, then use 'hg resolve --mark')
       
  1352   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
  1353   fix conflicts and see `hg help evolve.interrupted`
       
  1354   [1]
       
  1355 
       
  1356   $ hg diff
       
  1357   diff -r f7c1071f1e7c ch
       
  1358   --- a/ch	Thu Jan 01 00:00:00 1970 +0000
       
  1359   +++ b/ch	Thu Jan 01 00:00:00 1970 +0000
       
  1360   @@ -1,1 +1,5 @@
       
  1361   +<<<<<<< local: f7c1071f1e7c - test: added c
       
  1362    ch
       
  1363   +=======
       
  1364   +chconflict
       
  1365   +>>>>>>> other: 229da2719b19 - test: added ch
       
  1366 
       
  1367   $ echo ch > ch
       
  1368   $ hg res -m
       
  1369   (no more unresolved files)
       
  1370   continue: hg evolve --continue
       
  1371 
       
  1372   $ hg evolve --continue
       
  1373   content-divergent changesets differ by descriptions only, discarding 229da2719b19
       
  1374   working directory is now at f7c1071f1e7c
       
  1375 
       
  1376   $ hg evolve -l
       
  1377 
       
  1378   $ hg par
       
  1379   changeset:   4:f7c1071f1e7c
       
  1380   tag:         tip
       
  1381   parent:      1:5f6d8a4bf34a
       
  1382   user:        test
       
  1383   date:        Thu Jan 01 00:00:00 1970 +0000
       
  1384   summary:     added c
       
  1385   
       
  1386 Testing the case when "merging results in same as public cset" where:
       
  1387 both the csets are on different parent and relocation leads to conflict but merging won't.
       
  1388 ------------------------------------------------------------------------------------------
       
  1389 Prepare the repo:
       
  1390 
       
  1391   $ cd ..
       
  1392   $ hg init pubdiv8
       
  1393   $ cd pubdiv8
       
  1394   $ for ch in a b c d; do
       
  1395   >   echo $ch > $ch;
       
  1396   >   hg ci -Am "added "$ch;
       
  1397   > done;
       
  1398   adding a
       
  1399   adding b
       
  1400   adding c
       
  1401   adding d
       
  1402 
       
  1403   $ hg up 1
       
  1404   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
  1405   $ echo dh > dh
       
  1406   $ echo cc > c
       
  1407   $ hg add dh c
       
  1408   $ hg ci -m "added dh"
       
  1409   created new head
       
  1410 
       
  1411   $ hg up 2
       
  1412   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
  1413   $ echo dh > dh
       
  1414   $ hg add dh
       
  1415   $ hg ci -m "added d"
       
  1416   created new head
       
  1417 
       
  1418   $ hg glog
       
  1419   @  5:e800202333a4 added d
       
  1420   |   draft
       
  1421   |
       
  1422   | o  4:f89a8e2f86ac added dh
       
  1423   | |   draft
       
  1424   | |
       
  1425   +---o  3:9150fe93bec6 added d
       
  1426   | |     draft
       
  1427   | |
       
  1428   o |  2:155349b645be added c
       
  1429   |/    draft
       
  1430   |
       
  1431   o  1:5f6d8a4bf34a added b
       
  1432   |   draft
       
  1433   |
       
  1434   o  0:9092f1db7931 added a
       
  1435       draft
       
  1436   
       
  1437 
       
  1438   $ hg prune 3 -s 4
       
  1439   1 changesets pruned
       
  1440   $ hg prune 3 -s 5 --hidden
       
  1441   1 changesets pruned
       
  1442   2 new content-divergent changesets
       
  1443   $ hg phase --public -r 5
       
  1444 
       
  1445   $ hg glog
       
  1446   @  5:e800202333a4 added d
       
  1447   |   public
       
  1448   |
       
  1449   | *  4:f89a8e2f86ac added dh
       
  1450   | |   draft content-divergent
       
  1451   | |
       
  1452   o |  2:155349b645be added c
       
  1453   |/    public
       
  1454   |
       
  1455   o  1:5f6d8a4bf34a added b
       
  1456   |   public
       
  1457   |
       
  1458   o  0:9092f1db7931 added a
       
  1459       public
       
  1460   
       
  1461   $ hg evolve --content-divergent --any
       
  1462   merge:[5] added d
       
  1463   with: [4] added dh
       
  1464   base: [3] added d
       
  1465   rebasing "other" content-divergent changeset f89a8e2f86ac on 155349b645be
       
  1466   merging c
       
  1467   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
  1468   fix conflicts and see `hg help evolve.interrupted`
       
  1469   [1]
       
  1470 
       
  1471   $ echo c > c
       
  1472   $ hg res -m
       
  1473   (no more unresolved files)
       
  1474   continue: hg evolve --continue
       
  1475 
       
  1476   $ hg evolve --continue
       
  1477   evolving 4:f89a8e2f86ac "added dh"
       
  1478   updating to "local" side of the conflict: e800202333a4
       
  1479   merging "other" content-divergent changeset 'bc309da55b88'
       
  1480   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  1481   content-divergent changesets differ by descriptions only, discarding bc309da55b88
       
  1482   working directory is now at e800202333a4
       
  1483 
       
  1484   $ hg evolve -l
       
  1485 
       
  1486   $ hg par
       
  1487   changeset:   5:e800202333a4
       
  1488   tag:         tip
       
  1489   parent:      2:155349b645be
       
  1490   user:        test
       
  1491   date:        Thu Jan 01 00:00:00 1970 +0000
       
  1492   summary:     added d
       
  1493   
       
  1494 Testing the case when "merging results in same as public cset" where:
       
  1495 both the csets are on different parent and merging leads to conflict but relocation won't.
       
  1496 ------------------------------------------------------------------------------------------
       
  1497 Prepare the repo:
       
  1498 
       
  1499   $ cd ..
       
  1500   $ hg init pubdiv9
       
  1501   $ cd pubdiv9
       
  1502   $ for ch in a b c d; do
       
  1503   >   echo $ch > $ch;
       
  1504   >   hg ci -Am "added "$ch;
       
  1505   > done;
       
  1506   adding a
       
  1507   adding b
       
  1508   adding c
       
  1509   adding d
       
  1510 
       
  1511   $ hg up 1
       
  1512   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
  1513   $ echo dhconflict > dh
       
  1514   $ hg add dh
       
  1515   $ hg ci -m "added dh"
       
  1516   created new head
       
  1517 
       
  1518   $ hg up 2
       
  1519   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
  1520   $ echo dh > dh
       
  1521   $ hg add dh
       
  1522   $ hg ci -m "added d"
       
  1523   created new head
       
  1524 
       
  1525   $ hg glog
       
  1526   @  5:e800202333a4 added d
       
  1527   |   draft
       
  1528   |
       
  1529   | o  4:db0b7bba0aae added dh
       
  1530   | |   draft
       
  1531   | |
       
  1532   +---o  3:9150fe93bec6 added d
       
  1533   | |     draft
       
  1534   | |
       
  1535   o |  2:155349b645be added c
       
  1536   |/    draft
       
  1537   |
       
  1538   o  1:5f6d8a4bf34a added b
       
  1539   |   draft
       
  1540   |
       
  1541   o  0:9092f1db7931 added a
       
  1542       draft
       
  1543   
       
  1544 
       
  1545   $ hg prune 3 -s 4
       
  1546   1 changesets pruned
       
  1547   $ hg prune 3 -s 5 --hidden
       
  1548   1 changesets pruned
       
  1549   2 new content-divergent changesets
       
  1550   $ hg phase --public -r 5
       
  1551 
       
  1552   $ hg glog
       
  1553   @  5:e800202333a4 added d
       
  1554   |   public
       
  1555   |
       
  1556   | *  4:db0b7bba0aae added dh
       
  1557   | |   draft content-divergent
       
  1558   | |
       
  1559   o |  2:155349b645be added c
       
  1560   |/    public
       
  1561   |
       
  1562   o  1:5f6d8a4bf34a added b
       
  1563   |   public
       
  1564   |
       
  1565   o  0:9092f1db7931 added a
       
  1566       public
       
  1567   
       
  1568   $ hg evolve --content-divergent --any
       
  1569   merge:[5] added d
       
  1570   with: [4] added dh
       
  1571   base: [3] added d
       
  1572   rebasing "other" content-divergent changeset db0b7bba0aae on 155349b645be
       
  1573   updating to "local" side of the conflict: e800202333a4
       
  1574   merging "other" content-divergent changeset 'a5bbf2042450'
       
  1575   merging dh
       
  1576   warning: conflicts while merging dh! (edit, then use 'hg resolve --mark')
       
  1577   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
  1578   fix conflicts and see `hg help evolve.interrupted`
       
  1579   [1]
       
  1580 
       
  1581   $ echo dh > dh
       
  1582   $ hg res -m
       
  1583   (no more unresolved files)
       
  1584   continue: hg evolve --continue
       
  1585 
       
  1586   $ hg evolve --continue
       
  1587   content-divergent changesets differ by descriptions only, discarding a5bbf2042450
       
  1588   working directory is now at e800202333a4
       
  1589 
       
  1590   $ hg evolve -l
       
  1591 
       
  1592   $ hg par
       
  1593   changeset:   5:e800202333a4
       
  1594   tag:         tip
       
  1595   parent:      2:155349b645be
       
  1596   user:        test
       
  1597   date:        Thu Jan 01 00:00:00 1970 +0000
       
  1598   summary:     added d
       
  1599   
       
  1600 
       
  1601 Testing the case when "merging results in same as public cset" where:
       
  1602 both the csets are on different parent and relocation and merging both leads to conflict:
       
  1603 -----------------------------------------------------------------------------------------
       
  1604 Prepare the repo:
       
  1605 
       
  1606   $ cd ..
       
  1607   $ hg init pubdiv10
       
  1608   $ cd pubdiv10
       
  1609   $ for ch in a b c d; do
       
  1610   >   echo $ch > $ch;
       
  1611   >   hg ci -Am "added "$ch;
       
  1612   > done;
       
  1613   adding a
       
  1614   adding b
       
  1615   adding c
       
  1616   adding d
       
  1617 
       
  1618   $ hg up 1
       
  1619   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
  1620   $ echo dhconflict > dh
       
  1621   $ echo cc > c
       
  1622   $ hg add dh c
       
  1623   $ hg ci -m "added dh"
       
  1624   created new head
       
  1625 
       
  1626   $ hg up 2
       
  1627   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
  1628   $ echo dh > dh
       
  1629   $ hg add dh
       
  1630   $ hg ci -m "added d"
       
  1631   created new head
       
  1632 
       
  1633   $ hg glog
       
  1634   @  5:e800202333a4 added d
       
  1635   |   draft
       
  1636   |
       
  1637   | o  4:67b19bbd770f added dh
       
  1638   | |   draft
       
  1639   | |
       
  1640   +---o  3:9150fe93bec6 added d
       
  1641   | |     draft
       
  1642   | |
       
  1643   o |  2:155349b645be added c
       
  1644   |/    draft
       
  1645   |
       
  1646   o  1:5f6d8a4bf34a added b
       
  1647   |   draft
       
  1648   |
       
  1649   o  0:9092f1db7931 added a
       
  1650       draft
       
  1651   
       
  1652 
       
  1653   $ hg prune 3 -s 4
       
  1654   1 changesets pruned
       
  1655   $ hg prune 3 -s 5 --hidden
       
  1656   1 changesets pruned
       
  1657   2 new content-divergent changesets
       
  1658   $ hg phase --public -r 5
       
  1659 
       
  1660   $ hg glog
       
  1661   @  5:e800202333a4 added d
       
  1662   |   public
       
  1663   |
       
  1664   | *  4:67b19bbd770f added dh
       
  1665   | |   draft content-divergent
       
  1666   | |
       
  1667   o |  2:155349b645be added c
       
  1668   |/    public
       
  1669   |
       
  1670   o  1:5f6d8a4bf34a added b
       
  1671   |   public
       
  1672   |
       
  1673   o  0:9092f1db7931 added a
       
  1674       public
       
  1675   
       
  1676   $ hg evolve --content-divergent --any
       
  1677   merge:[5] added d
       
  1678   with: [4] added dh
       
  1679   base: [3] added d
       
  1680   rebasing "other" content-divergent changeset 67b19bbd770f on 155349b645be
       
  1681   merging c
       
  1682   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
  1683   fix conflicts and see `hg help evolve.interrupted`
       
  1684   [1]
       
  1685 
       
  1686   $ echo c > c
       
  1687   $ hg res -m
       
  1688   (no more unresolved files)
       
  1689   continue: hg evolve --continue
       
  1690 
       
  1691   $ hg evolve --continue
       
  1692   evolving 4:67b19bbd770f "added dh"
       
  1693   updating to "local" side of the conflict: e800202333a4
       
  1694   merging "other" content-divergent changeset '09054d1f3c97'
       
  1695   merging dh
       
  1696   warning: conflicts while merging dh! (edit, then use 'hg resolve --mark')
       
  1697   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
  1698   fix conflicts and see `hg help evolve.interrupted`
       
  1699   [1]
       
  1700 
       
  1701   $ echo dh > dh
       
  1702   $ hg res -m
       
  1703   (no more unresolved files)
       
  1704   continue: hg evolve --continue
       
  1705 
       
  1706   $ hg evolve --continue
       
  1707   content-divergent changesets differ by descriptions only, discarding 09054d1f3c97
       
  1708   working directory is now at e800202333a4
       
  1709 
       
  1710   $ hg evolve -l
       
  1711 
       
  1712   $ hg par
       
  1713   changeset:   5:e800202333a4
       
  1714   tag:         tip
       
  1715   parent:      2:155349b645be
       
  1716   user:        test
       
  1717   date:        Thu Jan 01 00:00:00 1970 +0000
       
  1718   summary:     added d
       
  1719   
       
  1720 
       
  1721   $ cd ..
       
  1722 
       
  1723 Test a pratical "rebase" case
       
  1724 =============================
       
  1725 
       
  1726 Initial setup
       
  1727 
       
  1728   $ hg init rebase-divergence
       
  1729   $ cd rebase-divergence
       
  1730   $ echo root >> root
       
  1731   $ hg add root
       
  1732   $ hg commit -m root
       
  1733   $ for x in c_A c_B c_C c_D; do
       
  1734   >     echo $x >> $x
       
  1735   >     hg add $x
       
  1736   >     hg commit -m $x
       
  1737   > done
       
  1738 
       
  1739   $ hg up 'desc("c_A")'
       
  1740   0 files updated, 0 files merged, 3 files removed, 0 files unresolved
       
  1741 
       
  1742   $ for x in c_E c_F; do
       
  1743   >     echo $x >> $x
       
  1744   >     hg add $x
       
  1745   >     hg commit -m $x
       
  1746   > done
       
  1747   created new head
       
  1748 
       
  1749 (creating divergence locally for simplicity)
       
  1750 
       
  1751   $ node=`hg log --rev 'desc("c_E")' -T '{node}'`
       
  1752   $ hg rebase -s $node -d 'desc("c_B")'
       
  1753   rebasing 5:4ab2719bbab9 "c_E"
       
  1754   rebasing 6:77ccbf8d837e "c_F" (tip)
       
  1755   $ hg phase --public tip
       
  1756   $ hg rebase --hidden -s $node -d 'desc("c_C")' --config experimental.evolution.allowdivergence=yes
       
  1757   rebasing 5:4ab2719bbab9 "c_E"
       
  1758   rebasing 6:77ccbf8d837e "c_F"
       
  1759   2 new content-divergent changesets
       
  1760 
       
  1761   $ hg sum
       
  1762   parent: 8:a52ac76b45f5 
       
  1763    c_F
       
  1764   branch: default
       
  1765   commit: (clean)
       
  1766   update: 4 new changesets, 3 branch heads (merge)
       
  1767   phases: 4 draft
       
  1768   content-divergent: 2 changesets
       
  1769   $ hg evolve --list
       
  1770   b4a584aea4bd: c_E
       
  1771     content-divergent: c7d2d47c7240 (public) (precursor 4ab2719bbab9)
       
  1772   
       
  1773   8ae8db670b4a: c_F
       
  1774     content-divergent: a52ac76b45f5 (public) (precursor 77ccbf8d837e)
       
  1775   
       
  1776   $ hg log -G --patch
       
  1777   *  changeset:   10:8ae8db670b4a
       
  1778   |  tag:         tip
       
  1779   |  user:        test
       
  1780   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1781   |  instability: content-divergent
       
  1782   |  summary:     c_F
       
  1783   |
       
  1784   |  diff -r b4a584aea4bd -r 8ae8db670b4a c_F
       
  1785   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1786   |  +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
       
  1787   |  @@ -0,0 +1,1 @@
       
  1788   |  +c_F
       
  1789   |
       
  1790   *  changeset:   9:b4a584aea4bd
       
  1791   |  parent:      3:abb77b893f28
       
  1792   |  user:        test
       
  1793   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1794   |  instability: content-divergent
       
  1795   |  summary:     c_E
       
  1796   |
       
  1797   |  diff -r abb77b893f28 -r b4a584aea4bd c_E
       
  1798   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1799   |  +++ b/c_E	Thu Jan 01 00:00:00 1970 +0000
       
  1800   |  @@ -0,0 +1,1 @@
       
  1801   |  +c_E
       
  1802   |
       
  1803   | @  changeset:   8:a52ac76b45f5
       
  1804   | |  user:        test
       
  1805   | |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1806   | |  summary:     c_F
       
  1807   | |
       
  1808   | |  diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
       
  1809   | |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1810   | |  +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
       
  1811   | |  @@ -0,0 +1,1 @@
       
  1812   | |  +c_F
       
  1813   | |
       
  1814   | o  changeset:   7:c7d2d47c7240
       
  1815   | |  parent:      2:eb1b4e1205b8
       
  1816   | |  user:        test
       
  1817   | |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1818   | |  summary:     c_E
       
  1819   | |
       
  1820   | |  diff -r eb1b4e1205b8 -r c7d2d47c7240 c_E
       
  1821   | |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1822   | |  +++ b/c_E	Thu Jan 01 00:00:00 1970 +0000
       
  1823   | |  @@ -0,0 +1,1 @@
       
  1824   | |  +c_E
       
  1825   | |
       
  1826   +---o  changeset:   4:dbb960d6c97c
       
  1827   | |    user:        test
       
  1828   | |    date:        Thu Jan 01 00:00:00 1970 +0000
       
  1829   | |    summary:     c_D
       
  1830   | |
       
  1831   | |    diff -r abb77b893f28 -r dbb960d6c97c c_D
       
  1832   | |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1833   | |    +++ b/c_D	Thu Jan 01 00:00:00 1970 +0000
       
  1834   | |    @@ -0,0 +1,1 @@
       
  1835   | |    +c_D
       
  1836   | |
       
  1837   o |  changeset:   3:abb77b893f28
       
  1838   |/   user:        test
       
  1839   |    date:        Thu Jan 01 00:00:00 1970 +0000
       
  1840   |    summary:     c_C
       
  1841   |
       
  1842   |    diff -r eb1b4e1205b8 -r abb77b893f28 c_C
       
  1843   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1844   |    +++ b/c_C	Thu Jan 01 00:00:00 1970 +0000
       
  1845   |    @@ -0,0 +1,1 @@
       
  1846   |    +c_C
       
  1847   |
       
  1848   o  changeset:   2:eb1b4e1205b8
       
  1849   |  user:        test
       
  1850   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1851   |  summary:     c_B
       
  1852   |
       
  1853   |  diff -r e31751786014 -r eb1b4e1205b8 c_B
       
  1854   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1855   |  +++ b/c_B	Thu Jan 01 00:00:00 1970 +0000
       
  1856   |  @@ -0,0 +1,1 @@
       
  1857   |  +c_B
       
  1858   |
       
  1859   o  changeset:   1:e31751786014
       
  1860   |  user:        test
       
  1861   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1862   |  summary:     c_A
       
  1863   |
       
  1864   |  diff -r 1e4be0697311 -r e31751786014 c_A
       
  1865   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1866   |  +++ b/c_A	Thu Jan 01 00:00:00 1970 +0000
       
  1867   |  @@ -0,0 +1,1 @@
       
  1868   |  +c_A
       
  1869   |
       
  1870   o  changeset:   0:1e4be0697311
       
  1871      user:        test
       
  1872      date:        Thu Jan 01 00:00:00 1970 +0000
       
  1873      summary:     root
       
  1874   
       
  1875      diff -r 000000000000 -r 1e4be0697311 root
       
  1876      --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1877      +++ b/root	Thu Jan 01 00:00:00 1970 +0000
       
  1878      @@ -0,0 +1,1 @@
       
  1879      +root
       
  1880   
       
  1881 
       
  1882 Run automatic evolution
       
  1883 
       
  1884   $ hg evolve --content-divergent --rev 'not public() and desc("c_E")::'
       
  1885   merge:[7] c_E
       
  1886   with: [9] c_E
       
  1887   base: [5] c_E
       
  1888   rebasing "other" content-divergent changeset b4a584aea4bd on eb1b4e1205b8
       
  1889   updating to "local" side of the conflict: c7d2d47c7240
       
  1890   merging "other" content-divergent changeset '0773642cfa95'
       
  1891   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  1892   1 new orphan changesets
       
  1893   merge:[8] c_F
       
  1894   with: [10] c_F
       
  1895   base: [6] c_F
       
  1896   rebasing "other" content-divergent changeset 8ae8db670b4a on c7d2d47c7240
       
  1897   updating to "local" side of the conflict: a52ac76b45f5
       
  1898   merging "other" content-divergent changeset '6a87ed4aa317'
       
  1899   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  1900   $ hg sum
       
  1901   parent: 8:a52ac76b45f5 tip
       
  1902    c_F
       
  1903   branch: default
       
  1904   commit: (clean)
       
  1905   update: 2 new changesets, 2 branch heads (merge)
       
  1906   phases: 2 draft
       
  1907 
       
  1908   $ hg evolve --list
       
  1909 
       
  1910   $ hg log -G --patch
       
  1911   @  changeset:   8:a52ac76b45f5
       
  1912   |  tag:         tip
       
  1913   |  user:        test
       
  1914   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1915   |  summary:     c_F
       
  1916   |
       
  1917   |  diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
       
  1918   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1919   |  +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
       
  1920   |  @@ -0,0 +1,1 @@
       
  1921   |  +c_F
       
  1922   |
       
  1923   o  changeset:   7:c7d2d47c7240
       
  1924   |  parent:      2:eb1b4e1205b8
       
  1925   |  user:        test
       
  1926   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1927   |  summary:     c_E
       
  1928   |
       
  1929   |  diff -r eb1b4e1205b8 -r c7d2d47c7240 c_E
       
  1930   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1931   |  +++ b/c_E	Thu Jan 01 00:00:00 1970 +0000
       
  1932   |  @@ -0,0 +1,1 @@
       
  1933   |  +c_E
       
  1934   |
       
  1935   | o  changeset:   4:dbb960d6c97c
       
  1936   | |  user:        test
       
  1937   | |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1938   | |  summary:     c_D
       
  1939   | |
       
  1940   | |  diff -r abb77b893f28 -r dbb960d6c97c c_D
       
  1941   | |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1942   | |  +++ b/c_D	Thu Jan 01 00:00:00 1970 +0000
       
  1943   | |  @@ -0,0 +1,1 @@
       
  1944   | |  +c_D
       
  1945   | |
       
  1946   | o  changeset:   3:abb77b893f28
       
  1947   |/   user:        test
       
  1948   |    date:        Thu Jan 01 00:00:00 1970 +0000
       
  1949   |    summary:     c_C
       
  1950   |
       
  1951   |    diff -r eb1b4e1205b8 -r abb77b893f28 c_C
       
  1952   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1953   |    +++ b/c_C	Thu Jan 01 00:00:00 1970 +0000
       
  1954   |    @@ -0,0 +1,1 @@
       
  1955   |    +c_C
       
  1956   |
       
  1957   o  changeset:   2:eb1b4e1205b8
       
  1958   |  user:        test
       
  1959   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1960   |  summary:     c_B
       
  1961   |
       
  1962   |  diff -r e31751786014 -r eb1b4e1205b8 c_B
       
  1963   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1964   |  +++ b/c_B	Thu Jan 01 00:00:00 1970 +0000
       
  1965   |  @@ -0,0 +1,1 @@
       
  1966   |  +c_B
       
  1967   |
       
  1968   o  changeset:   1:e31751786014
       
  1969   |  user:        test
       
  1970   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1971   |  summary:     c_A
       
  1972   |
       
  1973   |  diff -r 1e4be0697311 -r e31751786014 c_A
       
  1974   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1975   |  +++ b/c_A	Thu Jan 01 00:00:00 1970 +0000
       
  1976   |  @@ -0,0 +1,1 @@
       
  1977   |  +c_A
       
  1978   |
       
  1979   o  changeset:   0:1e4be0697311
       
  1980      user:        test
       
  1981      date:        Thu Jan 01 00:00:00 1970 +0000
       
  1982      summary:     root
       
  1983   
       
  1984      diff -r 000000000000 -r 1e4be0697311 root
       
  1985      --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1986      +++ b/root	Thu Jan 01 00:00:00 1970 +0000
       
  1987      @@ -0,0 +1,1 @@
       
  1988      +root
       
  1989   
       
  1990   $ hg export tip
       
  1991   # HG changeset patch
       
  1992   # User test
       
  1993   # Date 0 0
       
  1994   #      Thu Jan 01 00:00:00 1970 +0000
       
  1995   # Node ID a52ac76b45f523a039fc4a938d79874f4bdb1a85
       
  1996   # Parent  c7d2d47c7240562be5cbd1a24080dd0396178709
       
  1997   c_F
       
  1998   
       
  1999   diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
       
  2000   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  2001   +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
       
  2002   @@ -0,0 +1,1 @@
       
  2003   +c_F
       
  2004 
       
  2005   $ hg obslog --rev a52ac76b45f5
       
  2006   @    a52ac76b45f5 (8) c_F
       
  2007   |\
       
  2008   x |  6a87ed4aa317 (12) c_F
       
  2009   | |    rewritten as a52ac76b45f5 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
       
  2010   | |
       
  2011   x |  8ae8db670b4a (10) c_F
       
  2012   |/     rewritten(parent) as 6a87ed4aa317 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
       
  2013   |
       
  2014   x  77ccbf8d837e (6) c_F
       
  2015        rewritten(parent) as 8ae8db670b4a using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
       
  2016        rewritten(parent) as a52ac76b45f5 using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
       
  2017