tests/test-evolve-public-content-divergent.t
branchmercurial-4.7
changeset 4512 7a779a288793
parent 4473 14437b18b024
child 4513 d70db7e455dc
equal deleted inserted replaced
4359:2cbb9914d227 4512:7a779a288793
       
     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   local changed d which other deleted
       
  1043   use (c)hanged version, (d)elete, or leave (u)nresolved? u
       
  1044   1 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
  1045   fix conflicts and see `hg help evolve.interrupted`
       
  1046   [1]
       
  1047 
       
  1048   $ hg sum
       
  1049   parent: 5:93cd84bbdaca 
       
  1050    added d
       
  1051   parent: 6:2af3359250d3 tip (content-divergent)
       
  1052    added c e
       
  1053   branch: default
       
  1054   commit: 1 modified, 1 unknown, 1 unresolved (merge)
       
  1055   update: (current)
       
  1056   phases: 1 draft
       
  1057   content-divergent: 1 changesets
       
  1058   evolve: (evolve --continue)
       
  1059 
       
  1060   $ echo resolved > d
       
  1061   $ hg resolve -m d
       
  1062   (no more unresolved files)
       
  1063   continue: hg evolve --continue
       
  1064 
       
  1065   $ hg evolve --continue
       
  1066   committed as bc1f4610744c
       
  1067   working directory is now at bc1f4610744c
       
  1068 
       
  1069   $ hg export
       
  1070   # HG changeset patch
       
  1071   # User test
       
  1072   # Date 0 0
       
  1073   #      Thu Jan 01 00:00:00 1970 +0000
       
  1074   # Node ID bc1f4610744c6aa0e851d3876a61bfff6243b31c
       
  1075   # Parent  93cd84bbdacaeb8f881c29a609dbdd30c38cbc57
       
  1076   phase-divergent update to 93cd84bbdaca:
       
  1077   
       
  1078   added c e
       
  1079   
       
  1080   diff -r 93cd84bbdaca -r bc1f4610744c d
       
  1081   --- a/d	Thu Jan 01 00:00:00 1970 +0000
       
  1082   +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
  1083   @@ -1,1 +1,1 @@
       
  1084   -dd
       
  1085   +resolved
       
  1086   diff -r 93cd84bbdaca -r bc1f4610744c e
       
  1087   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1088   +++ b/e	Thu Jan 01 00:00:00 1970 +0000
       
  1089   @@ -0,0 +1,1 @@
       
  1090   +e
       
  1091 
       
  1092   $ hg evolve -l
       
  1093   $ cd ..
       
  1094 
       
  1095 Testing the case when "merging results in same as public cset" where:
       
  1096 both the csets are on same parent and no conflict in merging.
       
  1097 ---------------------------------------------------------------------
       
  1098 
       
  1099 Prepare the repo:
       
  1100 
       
  1101   $ hg init pubdiv5
       
  1102   $ cd pubdiv5
       
  1103   $ for ch in a b c; do
       
  1104   >   echo $ch > $ch;
       
  1105   >   hg ci -Am "added "$ch;
       
  1106   > done;
       
  1107   adding a
       
  1108   adding b
       
  1109   adding c
       
  1110 
       
  1111   $ hg up .^
       
  1112   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
  1113   $ echo ch > ch
       
  1114   $ hg add ch
       
  1115   $ hg ci -m "added ch"
       
  1116   created new head
       
  1117 
       
  1118   $ hg up .^
       
  1119   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
  1120   $ echo ch > ch
       
  1121   $ hg add ch
       
  1122   $ hg ci -m "added c"
       
  1123   created new head
       
  1124 
       
  1125   $ hg glog
       
  1126   @  4:f7c1071f1e7c added c
       
  1127   |   draft
       
  1128   |
       
  1129   | o  3:90522bccf499 added ch
       
  1130   |/    draft
       
  1131   |
       
  1132   | o  2:155349b645be added c
       
  1133   |/    draft
       
  1134   |
       
  1135   o  1:5f6d8a4bf34a added b
       
  1136   |   draft
       
  1137   |
       
  1138   o  0:9092f1db7931 added a
       
  1139       draft
       
  1140   
       
  1141 
       
  1142   $ hg prune 2 -s 3
       
  1143   1 changesets pruned
       
  1144   $ hg prune 2 -s 4 --hidden
       
  1145   1 changesets pruned
       
  1146   2 new content-divergent changesets
       
  1147   $ hg phase --public -r 4
       
  1148 
       
  1149   $ hg glog
       
  1150   @  4:f7c1071f1e7c added c
       
  1151   |   public
       
  1152   |
       
  1153   | *  3:90522bccf499 added ch
       
  1154   |/    draft content-divergent
       
  1155   |
       
  1156   o  1:5f6d8a4bf34a added b
       
  1157   |   public
       
  1158   |
       
  1159   o  0:9092f1db7931 added a
       
  1160       public
       
  1161   
       
  1162   $ hg evolve --content-divergent --any
       
  1163   merge:[4] added c
       
  1164   with: [3] added ch
       
  1165   base: [2] added c
       
  1166   merging "other" content-divergent changeset '90522bccf499'
       
  1167   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  1168   content-divergent changesets differ by descriptions only, discarding 90522bccf499
       
  1169 
       
  1170   $ hg evolve -l
       
  1171 
       
  1172   $ hg par
       
  1173   changeset:   4:f7c1071f1e7c
       
  1174   tag:         tip
       
  1175   parent:      1:5f6d8a4bf34a
       
  1176   user:        test
       
  1177   date:        Thu Jan 01 00:00:00 1970 +0000
       
  1178   summary:     added c
       
  1179   
       
  1180 
       
  1181 Testing the case when "merging results in same as public cset" where:
       
  1182 both the csets are on different parent and no conflict in merging and relocation.
       
  1183 ---------------------------------------------------------------------------------
       
  1184 
       
  1185 Prepare the repo:
       
  1186 
       
  1187   $ cd ..
       
  1188   $ hg init pubdiv6
       
  1189   $ cd pubdiv6
       
  1190   $ for ch in a b c d; do
       
  1191   >   echo $ch > $ch;
       
  1192   >   hg ci -Am "added "$ch;
       
  1193   > done;
       
  1194   adding a
       
  1195   adding b
       
  1196   adding c
       
  1197   adding d
       
  1198 
       
  1199   $ hg up 1
       
  1200   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
  1201   $ echo dh > dh
       
  1202   $ hg add dh
       
  1203   $ hg ci -m "added dh"
       
  1204   created new head
       
  1205 
       
  1206   $ hg up 2
       
  1207   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
  1208   $ echo dh > dh
       
  1209   $ hg add dh
       
  1210   $ hg ci -m "added d"
       
  1211   created new head
       
  1212 
       
  1213   $ hg glog
       
  1214   @  5:e800202333a4 added d
       
  1215   |   draft
       
  1216   |
       
  1217   | o  4:5acd58ef5066 added dh
       
  1218   | |   draft
       
  1219   | |
       
  1220   +---o  3:9150fe93bec6 added d
       
  1221   | |     draft
       
  1222   | |
       
  1223   o |  2:155349b645be added c
       
  1224   |/    draft
       
  1225   |
       
  1226   o  1:5f6d8a4bf34a added b
       
  1227   |   draft
       
  1228   |
       
  1229   o  0:9092f1db7931 added a
       
  1230       draft
       
  1231   
       
  1232 
       
  1233   $ hg prune 3 -s 4
       
  1234   1 changesets pruned
       
  1235   $ hg prune 3 -s 5 --hidden
       
  1236   1 changesets pruned
       
  1237   2 new content-divergent changesets
       
  1238   $ hg phase --public -r 5
       
  1239 
       
  1240   $ hg glog
       
  1241   @  5:e800202333a4 added d
       
  1242   |   public
       
  1243   |
       
  1244   | *  4:5acd58ef5066 added dh
       
  1245   | |   draft content-divergent
       
  1246   | |
       
  1247   o |  2:155349b645be added c
       
  1248   |/    public
       
  1249   |
       
  1250   o  1:5f6d8a4bf34a added b
       
  1251   |   public
       
  1252   |
       
  1253   o  0:9092f1db7931 added a
       
  1254       public
       
  1255   
       
  1256   $ hg evolve --content-divergent --any
       
  1257   merge:[5] added d
       
  1258   with: [4] added dh
       
  1259   base: [3] added d
       
  1260   rebasing "other" content-divergent changeset 5acd58ef5066 on 155349b645be
       
  1261   updating to "local" side of the conflict: e800202333a4
       
  1262   merging "other" content-divergent changeset 'ae3429430ef1'
       
  1263   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  1264   content-divergent changesets differ by descriptions only, discarding ae3429430ef1
       
  1265 
       
  1266   $ hg evolve -l
       
  1267 
       
  1268   $ hg par
       
  1269   changeset:   5:e800202333a4
       
  1270   tag:         tip
       
  1271   parent:      2:155349b645be
       
  1272   user:        test
       
  1273   date:        Thu Jan 01 00:00:00 1970 +0000
       
  1274   summary:     added d
       
  1275   
       
  1276 Testing the case when "merging results in same as public cset" where:
       
  1277 both the csets are on same parent and merging leads to conflict.
       
  1278 ---------------------------------------------------------------------
       
  1279 
       
  1280 Prepare the repo:
       
  1281 
       
  1282   $ cd ..
       
  1283   $ hg init pubdiv7
       
  1284   $ cd pubdiv7
       
  1285   $ for ch in a b c; do
       
  1286   >   echo $ch > $ch;
       
  1287   >   hg ci -Am "added "$ch;
       
  1288   > done;
       
  1289   adding a
       
  1290   adding b
       
  1291   adding c
       
  1292 
       
  1293   $ hg up .^
       
  1294   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
  1295   $ echo chconflict > ch
       
  1296   $ hg add ch
       
  1297   $ hg ci -m "added ch"
       
  1298   created new head
       
  1299 
       
  1300   $ hg up .^
       
  1301   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
  1302   $ echo ch > ch
       
  1303   $ hg add ch
       
  1304   $ hg ci -m "added c"
       
  1305   created new head
       
  1306 
       
  1307   $ hg glog
       
  1308   @  4:f7c1071f1e7c added c
       
  1309   |   draft
       
  1310   |
       
  1311   | o  3:229da2719b19 added ch
       
  1312   |/    draft
       
  1313   |
       
  1314   | o  2:155349b645be added c
       
  1315   |/    draft
       
  1316   |
       
  1317   o  1:5f6d8a4bf34a added b
       
  1318   |   draft
       
  1319   |
       
  1320   o  0:9092f1db7931 added a
       
  1321       draft
       
  1322   
       
  1323 
       
  1324   $ hg prune 2 -s 3
       
  1325   1 changesets pruned
       
  1326   $ hg prune 2 -s 4 --hidden
       
  1327   1 changesets pruned
       
  1328   2 new content-divergent changesets
       
  1329   $ hg phase --public -r 4
       
  1330 
       
  1331   $ hg glog
       
  1332   @  4:f7c1071f1e7c added c
       
  1333   |   public
       
  1334   |
       
  1335   | *  3:229da2719b19 added ch
       
  1336   |/    draft content-divergent
       
  1337   |
       
  1338   o  1:5f6d8a4bf34a added b
       
  1339   |   public
       
  1340   |
       
  1341   o  0:9092f1db7931 added a
       
  1342       public
       
  1343   
       
  1344   $ hg evolve --content-divergent --any
       
  1345   merge:[4] added c
       
  1346   with: [3] added ch
       
  1347   base: [2] added c
       
  1348   merging "other" content-divergent changeset '229da2719b19'
       
  1349   merging ch
       
  1350   warning: conflicts while merging ch! (edit, then use 'hg resolve --mark')
       
  1351   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
  1352   fix conflicts and see `hg help evolve.interrupted`
       
  1353   [1]
       
  1354 
       
  1355   $ hg diff
       
  1356   diff -r f7c1071f1e7c ch
       
  1357   --- a/ch	Thu Jan 01 00:00:00 1970 +0000
       
  1358   +++ b/ch	Thu Jan 01 00:00:00 1970 +0000
       
  1359   @@ -1,1 +1,5 @@
       
  1360   +<<<<<<< local: f7c1071f1e7c - test: added c
       
  1361    ch
       
  1362   +=======
       
  1363   +chconflict
       
  1364   +>>>>>>> other: 229da2719b19 - test: added ch
       
  1365 
       
  1366   $ echo ch > ch
       
  1367   $ hg res -m
       
  1368   (no more unresolved files)
       
  1369   continue: hg evolve --continue
       
  1370 
       
  1371   $ hg evolve --continue
       
  1372   content-divergent changesets differ by descriptions only, discarding 229da2719b19
       
  1373   working directory is now at f7c1071f1e7c
       
  1374 
       
  1375   $ hg evolve -l
       
  1376 
       
  1377   $ hg par
       
  1378   changeset:   4:f7c1071f1e7c
       
  1379   tag:         tip
       
  1380   parent:      1:5f6d8a4bf34a
       
  1381   user:        test
       
  1382   date:        Thu Jan 01 00:00:00 1970 +0000
       
  1383   summary:     added c
       
  1384   
       
  1385 Testing the case when "merging results in same as public cset" where:
       
  1386 both the csets are on different parent and relocation leads to conflict but merging won't.
       
  1387 ------------------------------------------------------------------------------------------
       
  1388 Prepare the repo:
       
  1389 
       
  1390   $ cd ..
       
  1391   $ hg init pubdiv8
       
  1392   $ cd pubdiv8
       
  1393   $ for ch in a b c d; do
       
  1394   >   echo $ch > $ch;
       
  1395   >   hg ci -Am "added "$ch;
       
  1396   > done;
       
  1397   adding a
       
  1398   adding b
       
  1399   adding c
       
  1400   adding d
       
  1401 
       
  1402   $ hg up 1
       
  1403   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
  1404   $ echo dh > dh
       
  1405   $ echo cc > c
       
  1406   $ hg add dh c
       
  1407   $ hg ci -m "added dh"
       
  1408   created new head
       
  1409 
       
  1410   $ hg up 2
       
  1411   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
  1412   $ echo dh > dh
       
  1413   $ hg add dh
       
  1414   $ hg ci -m "added d"
       
  1415   created new head
       
  1416 
       
  1417   $ hg glog
       
  1418   @  5:e800202333a4 added d
       
  1419   |   draft
       
  1420   |
       
  1421   | o  4:f89a8e2f86ac added dh
       
  1422   | |   draft
       
  1423   | |
       
  1424   +---o  3:9150fe93bec6 added d
       
  1425   | |     draft
       
  1426   | |
       
  1427   o |  2:155349b645be added c
       
  1428   |/    draft
       
  1429   |
       
  1430   o  1:5f6d8a4bf34a added b
       
  1431   |   draft
       
  1432   |
       
  1433   o  0:9092f1db7931 added a
       
  1434       draft
       
  1435   
       
  1436 
       
  1437   $ hg prune 3 -s 4
       
  1438   1 changesets pruned
       
  1439   $ hg prune 3 -s 5 --hidden
       
  1440   1 changesets pruned
       
  1441   2 new content-divergent changesets
       
  1442   $ hg phase --public -r 5
       
  1443 
       
  1444   $ hg glog
       
  1445   @  5:e800202333a4 added d
       
  1446   |   public
       
  1447   |
       
  1448   | *  4:f89a8e2f86ac added dh
       
  1449   | |   draft content-divergent
       
  1450   | |
       
  1451   o |  2:155349b645be added c
       
  1452   |/    public
       
  1453   |
       
  1454   o  1:5f6d8a4bf34a added b
       
  1455   |   public
       
  1456   |
       
  1457   o  0:9092f1db7931 added a
       
  1458       public
       
  1459   
       
  1460   $ hg evolve --content-divergent --any
       
  1461   merge:[5] added d
       
  1462   with: [4] added dh
       
  1463   base: [3] added d
       
  1464   rebasing "other" content-divergent changeset f89a8e2f86ac on 155349b645be
       
  1465   merging c
       
  1466   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
  1467   fix conflicts and see `hg help evolve.interrupted`
       
  1468   [1]
       
  1469 
       
  1470   $ echo c > c
       
  1471   $ hg res -m
       
  1472   (no more unresolved files)
       
  1473   continue: hg evolve --continue
       
  1474 
       
  1475   $ hg evolve --continue
       
  1476   evolving 4:f89a8e2f86ac "added dh"
       
  1477   updating to "local" side of the conflict: e800202333a4
       
  1478   merging "other" content-divergent changeset 'bc309da55b88'
       
  1479   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  1480   content-divergent changesets differ by descriptions only, discarding bc309da55b88
       
  1481   working directory is now at e800202333a4
       
  1482 
       
  1483   $ hg evolve -l
       
  1484 
       
  1485   $ hg par
       
  1486   changeset:   5:e800202333a4
       
  1487   tag:         tip
       
  1488   parent:      2:155349b645be
       
  1489   user:        test
       
  1490   date:        Thu Jan 01 00:00:00 1970 +0000
       
  1491   summary:     added d
       
  1492   
       
  1493 Testing the case when "merging results in same as public cset" where:
       
  1494 both the csets are on different parent and merging leads to conflict but relocation won't.
       
  1495 ------------------------------------------------------------------------------------------
       
  1496 Prepare the repo:
       
  1497 
       
  1498   $ cd ..
       
  1499   $ hg init pubdiv9
       
  1500   $ cd pubdiv9
       
  1501   $ for ch in a b c d; do
       
  1502   >   echo $ch > $ch;
       
  1503   >   hg ci -Am "added "$ch;
       
  1504   > done;
       
  1505   adding a
       
  1506   adding b
       
  1507   adding c
       
  1508   adding d
       
  1509 
       
  1510   $ hg up 1
       
  1511   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
  1512   $ echo dhconflict > dh
       
  1513   $ hg add dh
       
  1514   $ hg ci -m "added dh"
       
  1515   created new head
       
  1516 
       
  1517   $ hg up 2
       
  1518   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
  1519   $ echo dh > dh
       
  1520   $ hg add dh
       
  1521   $ hg ci -m "added d"
       
  1522   created new head
       
  1523 
       
  1524   $ hg glog
       
  1525   @  5:e800202333a4 added d
       
  1526   |   draft
       
  1527   |
       
  1528   | o  4:db0b7bba0aae added dh
       
  1529   | |   draft
       
  1530   | |
       
  1531   +---o  3:9150fe93bec6 added d
       
  1532   | |     draft
       
  1533   | |
       
  1534   o |  2:155349b645be added c
       
  1535   |/    draft
       
  1536   |
       
  1537   o  1:5f6d8a4bf34a added b
       
  1538   |   draft
       
  1539   |
       
  1540   o  0:9092f1db7931 added a
       
  1541       draft
       
  1542   
       
  1543 
       
  1544   $ hg prune 3 -s 4
       
  1545   1 changesets pruned
       
  1546   $ hg prune 3 -s 5 --hidden
       
  1547   1 changesets pruned
       
  1548   2 new content-divergent changesets
       
  1549   $ hg phase --public -r 5
       
  1550 
       
  1551   $ hg glog
       
  1552   @  5:e800202333a4 added d
       
  1553   |   public
       
  1554   |
       
  1555   | *  4:db0b7bba0aae added dh
       
  1556   | |   draft content-divergent
       
  1557   | |
       
  1558   o |  2:155349b645be added c
       
  1559   |/    public
       
  1560   |
       
  1561   o  1:5f6d8a4bf34a added b
       
  1562   |   public
       
  1563   |
       
  1564   o  0:9092f1db7931 added a
       
  1565       public
       
  1566   
       
  1567   $ hg evolve --content-divergent --any
       
  1568   merge:[5] added d
       
  1569   with: [4] added dh
       
  1570   base: [3] added d
       
  1571   rebasing "other" content-divergent changeset db0b7bba0aae on 155349b645be
       
  1572   updating to "local" side of the conflict: e800202333a4
       
  1573   merging "other" content-divergent changeset 'a5bbf2042450'
       
  1574   merging dh
       
  1575   warning: conflicts while merging dh! (edit, then use 'hg resolve --mark')
       
  1576   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
  1577   fix conflicts and see `hg help evolve.interrupted`
       
  1578   [1]
       
  1579 
       
  1580   $ echo dh > dh
       
  1581   $ hg res -m
       
  1582   (no more unresolved files)
       
  1583   continue: hg evolve --continue
       
  1584 
       
  1585   $ hg evolve --continue
       
  1586   content-divergent changesets differ by descriptions only, discarding a5bbf2042450
       
  1587   working directory is now at e800202333a4
       
  1588 
       
  1589   $ hg evolve -l
       
  1590 
       
  1591   $ hg par
       
  1592   changeset:   5:e800202333a4
       
  1593   tag:         tip
       
  1594   parent:      2:155349b645be
       
  1595   user:        test
       
  1596   date:        Thu Jan 01 00:00:00 1970 +0000
       
  1597   summary:     added d
       
  1598   
       
  1599 
       
  1600 Testing the case when "merging results in same as public cset" where:
       
  1601 both the csets are on different parent and relocation and merging both leads to conflict:
       
  1602 -----------------------------------------------------------------------------------------
       
  1603 Prepare the repo:
       
  1604 
       
  1605   $ cd ..
       
  1606   $ hg init pubdiv10
       
  1607   $ cd pubdiv10
       
  1608   $ for ch in a b c d; do
       
  1609   >   echo $ch > $ch;
       
  1610   >   hg ci -Am "added "$ch;
       
  1611   > done;
       
  1612   adding a
       
  1613   adding b
       
  1614   adding c
       
  1615   adding d
       
  1616 
       
  1617   $ hg up 1
       
  1618   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
  1619   $ echo dhconflict > dh
       
  1620   $ echo cc > c
       
  1621   $ hg add dh c
       
  1622   $ hg ci -m "added dh"
       
  1623   created new head
       
  1624 
       
  1625   $ hg up 2
       
  1626   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
  1627   $ echo dh > dh
       
  1628   $ hg add dh
       
  1629   $ hg ci -m "added d"
       
  1630   created new head
       
  1631 
       
  1632   $ hg glog
       
  1633   @  5:e800202333a4 added d
       
  1634   |   draft
       
  1635   |
       
  1636   | o  4:67b19bbd770f added dh
       
  1637   | |   draft
       
  1638   | |
       
  1639   +---o  3:9150fe93bec6 added d
       
  1640   | |     draft
       
  1641   | |
       
  1642   o |  2:155349b645be added c
       
  1643   |/    draft
       
  1644   |
       
  1645   o  1:5f6d8a4bf34a added b
       
  1646   |   draft
       
  1647   |
       
  1648   o  0:9092f1db7931 added a
       
  1649       draft
       
  1650   
       
  1651 
       
  1652   $ hg prune 3 -s 4
       
  1653   1 changesets pruned
       
  1654   $ hg prune 3 -s 5 --hidden
       
  1655   1 changesets pruned
       
  1656   2 new content-divergent changesets
       
  1657   $ hg phase --public -r 5
       
  1658 
       
  1659   $ hg glog
       
  1660   @  5:e800202333a4 added d
       
  1661   |   public
       
  1662   |
       
  1663   | *  4:67b19bbd770f added dh
       
  1664   | |   draft content-divergent
       
  1665   | |
       
  1666   o |  2:155349b645be added c
       
  1667   |/    public
       
  1668   |
       
  1669   o  1:5f6d8a4bf34a added b
       
  1670   |   public
       
  1671   |
       
  1672   o  0:9092f1db7931 added a
       
  1673       public
       
  1674   
       
  1675   $ hg evolve --content-divergent --any
       
  1676   merge:[5] added d
       
  1677   with: [4] added dh
       
  1678   base: [3] added d
       
  1679   rebasing "other" content-divergent changeset 67b19bbd770f on 155349b645be
       
  1680   merging c
       
  1681   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
  1682   fix conflicts and see `hg help evolve.interrupted`
       
  1683   [1]
       
  1684 
       
  1685   $ echo c > c
       
  1686   $ hg res -m
       
  1687   (no more unresolved files)
       
  1688   continue: hg evolve --continue
       
  1689 
       
  1690   $ hg evolve --continue
       
  1691   evolving 4:67b19bbd770f "added dh"
       
  1692   updating to "local" side of the conflict: e800202333a4
       
  1693   merging "other" content-divergent changeset '09054d1f3c97'
       
  1694   merging dh
       
  1695   warning: conflicts while merging dh! (edit, then use 'hg resolve --mark')
       
  1696   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
  1697   fix conflicts and see `hg help evolve.interrupted`
       
  1698   [1]
       
  1699 
       
  1700   $ echo dh > dh
       
  1701   $ hg res -m
       
  1702   (no more unresolved files)
       
  1703   continue: hg evolve --continue
       
  1704 
       
  1705   $ hg evolve --continue
       
  1706   content-divergent changesets differ by descriptions only, discarding 09054d1f3c97
       
  1707   working directory is now at e800202333a4
       
  1708 
       
  1709   $ hg evolve -l
       
  1710 
       
  1711   $ hg par
       
  1712   changeset:   5:e800202333a4
       
  1713   tag:         tip
       
  1714   parent:      2:155349b645be
       
  1715   user:        test
       
  1716   date:        Thu Jan 01 00:00:00 1970 +0000
       
  1717   summary:     added d
       
  1718   
       
  1719 
       
  1720   $ cd ..
       
  1721 
       
  1722 Test a pratical "rebase" case
       
  1723 =============================
       
  1724 
       
  1725 Initial setup
       
  1726 
       
  1727   $ hg init rebase-divergence
       
  1728   $ cd rebase-divergence
       
  1729   $ echo root >> root
       
  1730   $ hg add root
       
  1731   $ hg commit -m root
       
  1732   $ for x in c_A c_B c_C c_D; do
       
  1733   >     echo $x >> $x
       
  1734   >     hg add $x
       
  1735   >     hg commit -m $x
       
  1736   > done
       
  1737 
       
  1738   $ hg up 'desc("c_A")'
       
  1739   0 files updated, 0 files merged, 3 files removed, 0 files unresolved
       
  1740 
       
  1741   $ for x in c_E c_F; do
       
  1742   >     echo $x >> $x
       
  1743   >     hg add $x
       
  1744   >     hg commit -m $x
       
  1745   > done
       
  1746   created new head
       
  1747 
       
  1748 (creating divergence locally for simplicity)
       
  1749 
       
  1750   $ node=`hg log --rev 'desc("c_E")' -T '{node}'`
       
  1751   $ hg rebase -s $node -d 'desc("c_B")'
       
  1752   rebasing 5:4ab2719bbab9 "c_E"
       
  1753   rebasing 6:77ccbf8d837e "c_F" (tip)
       
  1754   $ hg phase --public tip
       
  1755   $ hg rebase --hidden -s $node -d 'desc("c_C")' --config experimental.evolution.allowdivergence=yes
       
  1756   rebasing 5:4ab2719bbab9 "c_E"
       
  1757   rebasing 6:77ccbf8d837e "c_F"
       
  1758   2 new content-divergent changesets
       
  1759 
       
  1760   $ hg sum
       
  1761   parent: 8:a52ac76b45f5 
       
  1762    c_F
       
  1763   branch: default
       
  1764   commit: (clean)
       
  1765   update: 4 new changesets, 3 branch heads (merge)
       
  1766   phases: 4 draft
       
  1767   content-divergent: 2 changesets
       
  1768   $ hg evolve --list
       
  1769   b4a584aea4bd: c_E
       
  1770     content-divergent: c7d2d47c7240 (public) (precursor 4ab2719bbab9)
       
  1771   
       
  1772   8ae8db670b4a: c_F
       
  1773     content-divergent: a52ac76b45f5 (public) (precursor 77ccbf8d837e)
       
  1774   
       
  1775   $ hg log -G --patch
       
  1776   *  changeset:   10:8ae8db670b4a
       
  1777   |  tag:         tip
       
  1778   |  user:        test
       
  1779   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1780   |  instability: content-divergent
       
  1781   |  summary:     c_F
       
  1782   |
       
  1783   |  diff -r b4a584aea4bd -r 8ae8db670b4a c_F
       
  1784   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1785   |  +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
       
  1786   |  @@ -0,0 +1,1 @@
       
  1787   |  +c_F
       
  1788   |
       
  1789   *  changeset:   9:b4a584aea4bd
       
  1790   |  parent:      3:abb77b893f28
       
  1791   |  user:        test
       
  1792   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1793   |  instability: content-divergent
       
  1794   |  summary:     c_E
       
  1795   |
       
  1796   |  diff -r abb77b893f28 -r b4a584aea4bd c_E
       
  1797   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1798   |  +++ b/c_E	Thu Jan 01 00:00:00 1970 +0000
       
  1799   |  @@ -0,0 +1,1 @@
       
  1800   |  +c_E
       
  1801   |
       
  1802   | @  changeset:   8:a52ac76b45f5
       
  1803   | |  user:        test
       
  1804   | |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1805   | |  summary:     c_F
       
  1806   | |
       
  1807   | |  diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
       
  1808   | |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1809   | |  +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
       
  1810   | |  @@ -0,0 +1,1 @@
       
  1811   | |  +c_F
       
  1812   | |
       
  1813   | o  changeset:   7:c7d2d47c7240
       
  1814   | |  parent:      2:eb1b4e1205b8
       
  1815   | |  user:        test
       
  1816   | |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1817   | |  summary:     c_E
       
  1818   | |
       
  1819   | |  diff -r eb1b4e1205b8 -r c7d2d47c7240 c_E
       
  1820   | |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1821   | |  +++ b/c_E	Thu Jan 01 00:00:00 1970 +0000
       
  1822   | |  @@ -0,0 +1,1 @@
       
  1823   | |  +c_E
       
  1824   | |
       
  1825   +---o  changeset:   4:dbb960d6c97c
       
  1826   | |    user:        test
       
  1827   | |    date:        Thu Jan 01 00:00:00 1970 +0000
       
  1828   | |    summary:     c_D
       
  1829   | |
       
  1830   | |    diff -r abb77b893f28 -r dbb960d6c97c c_D
       
  1831   | |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1832   | |    +++ b/c_D	Thu Jan 01 00:00:00 1970 +0000
       
  1833   | |    @@ -0,0 +1,1 @@
       
  1834   | |    +c_D
       
  1835   | |
       
  1836   o |  changeset:   3:abb77b893f28
       
  1837   |/   user:        test
       
  1838   |    date:        Thu Jan 01 00:00:00 1970 +0000
       
  1839   |    summary:     c_C
       
  1840   |
       
  1841   |    diff -r eb1b4e1205b8 -r abb77b893f28 c_C
       
  1842   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1843   |    +++ b/c_C	Thu Jan 01 00:00:00 1970 +0000
       
  1844   |    @@ -0,0 +1,1 @@
       
  1845   |    +c_C
       
  1846   |
       
  1847   o  changeset:   2:eb1b4e1205b8
       
  1848   |  user:        test
       
  1849   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1850   |  summary:     c_B
       
  1851   |
       
  1852   |  diff -r e31751786014 -r eb1b4e1205b8 c_B
       
  1853   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1854   |  +++ b/c_B	Thu Jan 01 00:00:00 1970 +0000
       
  1855   |  @@ -0,0 +1,1 @@
       
  1856   |  +c_B
       
  1857   |
       
  1858   o  changeset:   1:e31751786014
       
  1859   |  user:        test
       
  1860   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1861   |  summary:     c_A
       
  1862   |
       
  1863   |  diff -r 1e4be0697311 -r e31751786014 c_A
       
  1864   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1865   |  +++ b/c_A	Thu Jan 01 00:00:00 1970 +0000
       
  1866   |  @@ -0,0 +1,1 @@
       
  1867   |  +c_A
       
  1868   |
       
  1869   o  changeset:   0:1e4be0697311
       
  1870      user:        test
       
  1871      date:        Thu Jan 01 00:00:00 1970 +0000
       
  1872      summary:     root
       
  1873   
       
  1874      diff -r 000000000000 -r 1e4be0697311 root
       
  1875      --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1876      +++ b/root	Thu Jan 01 00:00:00 1970 +0000
       
  1877      @@ -0,0 +1,1 @@
       
  1878      +root
       
  1879   
       
  1880 
       
  1881 Run automatic evolution
       
  1882 
       
  1883   $ hg evolve --content-divergent --rev 'not public() and desc("c_E")::'
       
  1884   merge:[7] c_E
       
  1885   with: [9] c_E
       
  1886   base: [5] c_E
       
  1887   rebasing "other" content-divergent changeset b4a584aea4bd on eb1b4e1205b8
       
  1888   updating to "local" side of the conflict: c7d2d47c7240
       
  1889   merging "other" content-divergent changeset '0773642cfa95'
       
  1890   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  1891   1 new orphan changesets
       
  1892   merge:[8] c_F
       
  1893   with: [10] c_F
       
  1894   base: [6] c_F
       
  1895   rebasing "other" content-divergent changeset 8ae8db670b4a on c7d2d47c7240
       
  1896   updating to "local" side of the conflict: a52ac76b45f5
       
  1897   merging "other" content-divergent changeset '6a87ed4aa317'
       
  1898   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
  1899   $ hg sum
       
  1900   parent: 8:a52ac76b45f5 tip
       
  1901    c_F
       
  1902   branch: default
       
  1903   commit: (clean)
       
  1904   update: 2 new changesets, 2 branch heads (merge)
       
  1905   phases: 2 draft
       
  1906 
       
  1907   $ hg evolve --list
       
  1908 
       
  1909   $ hg log -G --patch
       
  1910   @  changeset:   8:a52ac76b45f5
       
  1911   |  tag:         tip
       
  1912   |  user:        test
       
  1913   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1914   |  summary:     c_F
       
  1915   |
       
  1916   |  diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
       
  1917   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1918   |  +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
       
  1919   |  @@ -0,0 +1,1 @@
       
  1920   |  +c_F
       
  1921   |
       
  1922   o  changeset:   7:c7d2d47c7240
       
  1923   |  parent:      2:eb1b4e1205b8
       
  1924   |  user:        test
       
  1925   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1926   |  summary:     c_E
       
  1927   |
       
  1928   |  diff -r eb1b4e1205b8 -r c7d2d47c7240 c_E
       
  1929   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1930   |  +++ b/c_E	Thu Jan 01 00:00:00 1970 +0000
       
  1931   |  @@ -0,0 +1,1 @@
       
  1932   |  +c_E
       
  1933   |
       
  1934   | o  changeset:   4:dbb960d6c97c
       
  1935   | |  user:        test
       
  1936   | |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1937   | |  summary:     c_D
       
  1938   | |
       
  1939   | |  diff -r abb77b893f28 -r dbb960d6c97c c_D
       
  1940   | |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1941   | |  +++ b/c_D	Thu Jan 01 00:00:00 1970 +0000
       
  1942   | |  @@ -0,0 +1,1 @@
       
  1943   | |  +c_D
       
  1944   | |
       
  1945   | o  changeset:   3:abb77b893f28
       
  1946   |/   user:        test
       
  1947   |    date:        Thu Jan 01 00:00:00 1970 +0000
       
  1948   |    summary:     c_C
       
  1949   |
       
  1950   |    diff -r eb1b4e1205b8 -r abb77b893f28 c_C
       
  1951   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1952   |    +++ b/c_C	Thu Jan 01 00:00:00 1970 +0000
       
  1953   |    @@ -0,0 +1,1 @@
       
  1954   |    +c_C
       
  1955   |
       
  1956   o  changeset:   2:eb1b4e1205b8
       
  1957   |  user:        test
       
  1958   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1959   |  summary:     c_B
       
  1960   |
       
  1961   |  diff -r e31751786014 -r eb1b4e1205b8 c_B
       
  1962   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1963   |  +++ b/c_B	Thu Jan 01 00:00:00 1970 +0000
       
  1964   |  @@ -0,0 +1,1 @@
       
  1965   |  +c_B
       
  1966   |
       
  1967   o  changeset:   1:e31751786014
       
  1968   |  user:        test
       
  1969   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
  1970   |  summary:     c_A
       
  1971   |
       
  1972   |  diff -r 1e4be0697311 -r e31751786014 c_A
       
  1973   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1974   |  +++ b/c_A	Thu Jan 01 00:00:00 1970 +0000
       
  1975   |  @@ -0,0 +1,1 @@
       
  1976   |  +c_A
       
  1977   |
       
  1978   o  changeset:   0:1e4be0697311
       
  1979      user:        test
       
  1980      date:        Thu Jan 01 00:00:00 1970 +0000
       
  1981      summary:     root
       
  1982   
       
  1983      diff -r 000000000000 -r 1e4be0697311 root
       
  1984      --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  1985      +++ b/root	Thu Jan 01 00:00:00 1970 +0000
       
  1986      @@ -0,0 +1,1 @@
       
  1987      +root
       
  1988   
       
  1989   $ hg export tip
       
  1990   # HG changeset patch
       
  1991   # User test
       
  1992   # Date 0 0
       
  1993   #      Thu Jan 01 00:00:00 1970 +0000
       
  1994   # Node ID a52ac76b45f523a039fc4a938d79874f4bdb1a85
       
  1995   # Parent  c7d2d47c7240562be5cbd1a24080dd0396178709
       
  1996   c_F
       
  1997   
       
  1998   diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
       
  1999   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
  2000   +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
       
  2001   @@ -0,0 +1,1 @@
       
  2002   +c_F
       
  2003 
       
  2004   $ hg obslog --rev a52ac76b45f5
       
  2005   @    a52ac76b45f5 (8) c_F
       
  2006   |\
       
  2007   x |  6a87ed4aa317 (12) c_F
       
  2008   | |    rewritten as a52ac76b45f5 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
       
  2009   | |
       
  2010   x |  8ae8db670b4a (10) c_F
       
  2011   |/     rewritten(parent) as 6a87ed4aa317 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
       
  2012   |
       
  2013   x  77ccbf8d837e (6) c_F
       
  2014        rewritten(parent) as 8ae8db670b4a using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
       
  2015        rewritten(parent) as a52ac76b45f5 using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
       
  2016