tests/test-evolve-public-content-divergent-corner-cases.t
changeset 4530 d081cc4f5fef
parent 4473 14437b18b024
child 4576 96ce1030d2fb
equal deleted inserted replaced
4529:e0eaa33a1f8a 4530:d081cc4f5fef
       
     1 ===============================================================
       
     2 Tests the resolution of public content divergence: corner cases
       
     3 ===============================================================
       
     4 
       
     5 This file intend to cover cases that are specific enough to not fit in the
       
     6 other cases.
       
     7 
       
     8 Setup
       
     9 =====
       
    10   $ cat >> $HGRCPATH <<EOF
       
    11   > [alias]
       
    12   > glog = log -GT "{rev}:{node|short} {desc|firstline}\n {phase} {troubles}\n\n"
       
    13   > [phases]
       
    14   > publish = False
       
    15   > [extensions]
       
    16   > rebase =
       
    17   > EOF
       
    18   $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
       
    19 
       
    20 Testing when divergence is not created by actual diff change, but because of rebasing:
       
    21 --------------------------------------------------------------------------------------
       
    22 
       
    23 Prepare the repo:
       
    24 
       
    25   $ hg init rebasediv
       
    26   $ cd rebasediv
       
    27   $ for ch in a b c; do
       
    28   >   echo $ch > $ch;
       
    29   >   hg ci -Am "added "$ch;
       
    30   > done;
       
    31   adding a
       
    32   adding b
       
    33   adding c
       
    34 
       
    35   $ hg glog
       
    36   @  2:155349b645be added c
       
    37   |   draft
       
    38   |
       
    39   o  1:5f6d8a4bf34a added b
       
    40   |   draft
       
    41   |
       
    42   o  0:9092f1db7931 added a
       
    43       draft
       
    44   
       
    45 
       
    46 On server side: a new cset is added based on rev 1 and rev 2 is rebased on newly added cset:
       
    47 
       
    48   $ hg up .^ -q
       
    49   $ echo d > d
       
    50   $ hg ci -Am "added d"
       
    51   adding d
       
    52   created new head
       
    53 
       
    54   $ hg rebase -r 2 -d .
       
    55   rebasing 2:155349b645be "added c"
       
    56 
       
    57   $ hg glog
       
    58   o  4:c0d7ee6604ea added c
       
    59   |   draft
       
    60   |
       
    61   @  3:c9241b0f2d5b added d
       
    62   |   draft
       
    63   |
       
    64   o  1:5f6d8a4bf34a added b
       
    65   |   draft
       
    66   |
       
    67   o  0:9092f1db7931 added a
       
    68       draft
       
    69   
       
    70 
       
    71 On user side: user has not pulled yet and amended the rev 2 which created the divergence after pull:
       
    72   $ hg up 2 --hidden -q
       
    73   updated to hidden changeset 155349b645be
       
    74   (hidden revision '155349b645be' was rewritten as: c0d7ee6604ea)
       
    75   working directory parent is obsolete! (155349b645be)
       
    76 
       
    77   $ echo cc >> c
       
    78   $ hg ci --amend -m "updated c"
       
    79   2 new content-divergent changesets
       
    80 
       
    81 Lets change the phase to --public of branch which is pulled from server:
       
    82   $ hg phase --public -r 4
       
    83   $ hg glog -p
       
    84   @  5:f5f9b4fc8b77 updated c
       
    85   |   draft content-divergent
       
    86   |
       
    87   |  diff -r 5f6d8a4bf34a -r f5f9b4fc8b77 c
       
    88   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
    89   |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
       
    90   |  @@ -0,0 +1,2 @@
       
    91   |  +c
       
    92   |  +cc
       
    93   |
       
    94   | o  4:c0d7ee6604ea added c
       
    95   | |   public
       
    96   | |
       
    97   | |  diff -r c9241b0f2d5b -r c0d7ee6604ea c
       
    98   | |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
    99   | |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
       
   100   | |  @@ -0,0 +1,1 @@
       
   101   | |  +c
       
   102   | |
       
   103   | o  3:c9241b0f2d5b added d
       
   104   |/    public
       
   105   |
       
   106   |    diff -r 5f6d8a4bf34a -r c9241b0f2d5b d
       
   107   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   108   |    +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
   109   |    @@ -0,0 +1,1 @@
       
   110   |    +d
       
   111   |
       
   112   o  1:5f6d8a4bf34a added b
       
   113   |   public
       
   114   |
       
   115   |  diff -r 9092f1db7931 -r 5f6d8a4bf34a b
       
   116   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   117   |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
       
   118   |  @@ -0,0 +1,1 @@
       
   119   |  +b
       
   120   |
       
   121   o  0:9092f1db7931 added a
       
   122       public
       
   123   
       
   124      diff -r 000000000000 -r 9092f1db7931 a
       
   125      --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   126      +++ b/a	Thu Jan 01 00:00:00 1970 +0000
       
   127      @@ -0,0 +1,1 @@
       
   128      +a
       
   129   
       
   130 
       
   131 Evolve:
       
   132   $ hg evolve --content-divergent
       
   133   merge:[4] added c
       
   134   with: [5] updated c
       
   135   base: [2] added c
       
   136   rebasing "other" content-divergent changeset f5f9b4fc8b77 on c9241b0f2d5b
       
   137   updating to "local" side of the conflict: c0d7ee6604ea
       
   138   merging "other" content-divergent changeset 'c3d442d80993'
       
   139   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   140   committed as 3b336cbee992
       
   141   working directory is now at 3b336cbee992
       
   142 
       
   143   $ hg glog -p
       
   144   @  8:3b336cbee992 phase-divergent update to c0d7ee6604ea:
       
   145   |   draft
       
   146   |
       
   147   |  diff -r c0d7ee6604ea -r 3b336cbee992 c
       
   148   |  --- a/c	Thu Jan 01 00:00:00 1970 +0000
       
   149   |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
       
   150   |  @@ -1,1 +1,2 @@
       
   151   |   c
       
   152   |  +cc
       
   153   |
       
   154   o  4:c0d7ee6604ea added c
       
   155   |   public
       
   156   |
       
   157   |  diff -r c9241b0f2d5b -r c0d7ee6604ea c
       
   158   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   159   |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
       
   160   |  @@ -0,0 +1,1 @@
       
   161   |  +c
       
   162   |
       
   163   o  3:c9241b0f2d5b added d
       
   164   |   public
       
   165   |
       
   166   |  diff -r 5f6d8a4bf34a -r c9241b0f2d5b d
       
   167   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   168   |  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
   169   |  @@ -0,0 +1,1 @@
       
   170   |  +d
       
   171   |
       
   172   o  1:5f6d8a4bf34a added b
       
   173   |   public
       
   174   |
       
   175   |  diff -r 9092f1db7931 -r 5f6d8a4bf34a b
       
   176   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   177   |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
       
   178   |  @@ -0,0 +1,1 @@
       
   179   |  +b
       
   180   |
       
   181   o  0:9092f1db7931 added a
       
   182       public
       
   183   
       
   184      diff -r 000000000000 -r 9092f1db7931 a
       
   185      --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   186      +++ b/a	Thu Jan 01 00:00:00 1970 +0000
       
   187      @@ -0,0 +1,1 @@
       
   188      +a
       
   189   
       
   190 Check that we don't have any unstable cset now:
       
   191   $ hg evolve -l
       
   192   $ cd ..
       
   193 
       
   194 Different parent, simple conflict on relocate, deleted file on actual merge
       
   195 ---------------------------------------------------------------------------
       
   196 
       
   197 Changeset "added c e" is also removing 'd'. This should conflict with the update
       
   198 to 'd' in the successors of 'adding d' when solving the content divergence.
       
   199 
       
   200   $ hg init pubdiv-parent-deleted-file
       
   201   $ cd pubdiv-parent-deleted-file
       
   202   $ for ch in a b c d; do
       
   203   >   echo $ch > $ch;
       
   204   >   hg ci -Aqm "added "$ch;
       
   205   > done;
       
   206 
       
   207   $ hg up 'desc("added b")'
       
   208   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   209   $ echo cfoo > c
       
   210   $ echo e > e
       
   211   $ hg add c e
       
   212   $ hg ci -m "added c e"
       
   213   created new head
       
   214 
       
   215   $ hg up 'desc("re:added c$")'
       
   216   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   217   $ echo dd > d
       
   218   $ hg add d
       
   219   $ hg ci -m "added d"
       
   220   created new head
       
   221 
       
   222   $ hg glog --patch --rev 'sort(all(), "topo")'
       
   223   @  5:93cd84bbdaca added d
       
   224   |   draft
       
   225   |
       
   226   |  diff -r 155349b645be -r 93cd84bbdaca d
       
   227   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   228   |  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
   229   |  @@ -0,0 +1,1 @@
       
   230   |  +dd
       
   231   |
       
   232   | o  3:9150fe93bec6 added d
       
   233   |/    draft
       
   234   |
       
   235   |    diff -r 155349b645be -r 9150fe93bec6 d
       
   236   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   237   |    +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
   238   |    @@ -0,0 +1,1 @@
       
   239   |    +d
       
   240   |
       
   241   o  2:155349b645be added c
       
   242   |   draft
       
   243   |
       
   244   |  diff -r 5f6d8a4bf34a -r 155349b645be c
       
   245   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   246   |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
       
   247   |  @@ -0,0 +1,1 @@
       
   248   |  +c
       
   249   |
       
   250   | o  4:e568fd1029bb added c e
       
   251   |/    draft
       
   252   |
       
   253   |    diff -r 5f6d8a4bf34a -r e568fd1029bb c
       
   254   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   255   |    +++ b/c	Thu Jan 01 00:00:00 1970 +0000
       
   256   |    @@ -0,0 +1,1 @@
       
   257   |    +cfoo
       
   258   |    diff -r 5f6d8a4bf34a -r e568fd1029bb e
       
   259   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   260   |    +++ b/e	Thu Jan 01 00:00:00 1970 +0000
       
   261   |    @@ -0,0 +1,1 @@
       
   262   |    +e
       
   263   |
       
   264   o  1:5f6d8a4bf34a added b
       
   265   |   draft
       
   266   |
       
   267   |  diff -r 9092f1db7931 -r 5f6d8a4bf34a b
       
   268   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   269   |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
       
   270   |  @@ -0,0 +1,1 @@
       
   271   |  +b
       
   272   |
       
   273   o  0:9092f1db7931 added a
       
   274       draft
       
   275   
       
   276      diff -r 000000000000 -r 9092f1db7931 a
       
   277      --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   278      +++ b/a	Thu Jan 01 00:00:00 1970 +0000
       
   279      @@ -0,0 +1,1 @@
       
   280      +a
       
   281   
       
   282   $ hg prune 'min(desc("added d"))' -s 'max(desc("added d"))'
       
   283   1 changesets pruned
       
   284   $ hg prune 'min(desc("added d"))' -s 'desc("added c e")' --hidden
       
   285   1 changesets pruned
       
   286   2 new content-divergent changesets
       
   287 
       
   288 Change phase to public for one head:
       
   289   $ hg phase --public -r 'max(desc("added d"))'
       
   290 
       
   291   $ hg glog
       
   292   @  5:93cd84bbdaca added d
       
   293   |   public
       
   294   |
       
   295   | *  4:e568fd1029bb added c e
       
   296   | |   draft content-divergent
       
   297   | |
       
   298   o |  2:155349b645be added c
       
   299   |/    public
       
   300   |
       
   301   o  1:5f6d8a4bf34a added b
       
   302   |   public
       
   303   |
       
   304   o  0:9092f1db7931 added a
       
   305       public
       
   306   
       
   307 
       
   308   $ hg glog --patch --rev 'sort(all(), "topo")' --hidden
       
   309   @  5:93cd84bbdaca added d
       
   310   |   public
       
   311   |
       
   312   |  diff -r 155349b645be -r 93cd84bbdaca d
       
   313   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   314   |  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
   315   |  @@ -0,0 +1,1 @@
       
   316   |  +dd
       
   317   |
       
   318   | x  3:9150fe93bec6 added d
       
   319   |/    draft
       
   320   |
       
   321   |    diff -r 155349b645be -r 9150fe93bec6 d
       
   322   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   323   |    +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
   324   |    @@ -0,0 +1,1 @@
       
   325   |    +d
       
   326   |
       
   327   o  2:155349b645be added c
       
   328   |   public
       
   329   |
       
   330   |  diff -r 5f6d8a4bf34a -r 155349b645be 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   | *  4:e568fd1029bb added c e
       
   337   |/    draft content-divergent
       
   338   |
       
   339   |    diff -r 5f6d8a4bf34a -r e568fd1029bb c
       
   340   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   341   |    +++ b/c	Thu Jan 01 00:00:00 1970 +0000
       
   342   |    @@ -0,0 +1,1 @@
       
   343   |    +cfoo
       
   344   |    diff -r 5f6d8a4bf34a -r e568fd1029bb e
       
   345   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   346   |    +++ b/e	Thu Jan 01 00:00:00 1970 +0000
       
   347   |    @@ -0,0 +1,1 @@
       
   348   |    +e
       
   349   |
       
   350   o  1:5f6d8a4bf34a added b
       
   351   |   public
       
   352   |
       
   353   |  diff -r 9092f1db7931 -r 5f6d8a4bf34a b
       
   354   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   355   |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
       
   356   |  @@ -0,0 +1,1 @@
       
   357   |  +b
       
   358   |
       
   359   o  0:9092f1db7931 added a
       
   360       public
       
   361   
       
   362      diff -r 000000000000 -r 9092f1db7931 a
       
   363      --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   364      +++ b/a	Thu Jan 01 00:00:00 1970 +0000
       
   365      @@ -0,0 +1,1 @@
       
   366      +a
       
   367   
       
   368 
       
   369   $ hg obslog --all --rev tip --patch
       
   370   @  93cd84bbdaca (5) added d
       
   371   |
       
   372   | *  e568fd1029bb (4) added c e
       
   373   |/
       
   374   x  9150fe93bec6 (3) added d
       
   375        rewritten(content) as 93cd84bbdaca using prune by test (Thu Jan 01 00:00:00 1970 +0000)
       
   376          diff -r 9150fe93bec6 -r 93cd84bbdaca d
       
   377          --- a/d	Thu Jan 01 00:00:00 1970 +0000
       
   378          +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
   379          @@ -1,1 +1,1 @@
       
   380          -d
       
   381          +dd
       
   382   
       
   383        rewritten(description, parent, content) as e568fd1029bb using prune by test (Thu Jan 01 00:00:00 1970 +0000)
       
   384          (No patch available, changesets rebased)
       
   385   
       
   386 
       
   387   $ hg evolve --content-divergent --any
       
   388   merge:[5] added d
       
   389   with: [4] added c e
       
   390   base: [3] added d
       
   391   rebasing "other" content-divergent changeset e568fd1029bb on 155349b645be
       
   392   merging c
       
   393   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
   394   fix conflicts and see `hg help evolve.interrupted`
       
   395   [1]
       
   396 
       
   397   $ hg diff
       
   398   diff -r 155349b645be c
       
   399   --- a/c	Thu Jan 01 00:00:00 1970 +0000
       
   400   +++ b/c	Thu Jan 01 00:00:00 1970 +0000
       
   401   @@ -1,1 +1,5 @@
       
   402   +<<<<<<< destination: 155349b645be - test: added c
       
   403    c
       
   404   +=======
       
   405   +cfoo
       
   406   +>>>>>>> evolving:    e568fd1029bb - test: added c e
       
   407   diff -r 155349b645be e
       
   408   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   409   +++ b/e	Thu Jan 01 00:00:00 1970 +0000
       
   410   @@ -0,0 +1,1 @@
       
   411   +e
       
   412 
       
   413   $ echo c > c
       
   414   $ hg res -m
       
   415   (no more unresolved files)
       
   416   continue: hg evolve --continue
       
   417 
       
   418   $ hg evolve --continue
       
   419   evolving 4:e568fd1029bb "added c e"
       
   420   updating to "local" side of the conflict: 93cd84bbdaca
       
   421   merging "other" content-divergent changeset '2af3359250d3'
       
   422   file 'd' was deleted in other but was modified in local.
       
   423   What do you want to do?
       
   424   use (c)hanged version, (d)elete, or leave (u)nresolved? u
       
   425   1 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
   426   fix conflicts and see `hg help evolve.interrupted`
       
   427   [1]
       
   428 
       
   429   $ hg sum
       
   430   parent: 5:93cd84bbdaca 
       
   431    added d
       
   432   parent: 6:2af3359250d3 tip (content-divergent)
       
   433    added c e
       
   434   branch: default
       
   435   commit: 1 modified, 1 unknown, 1 unresolved (merge)
       
   436   update: (current)
       
   437   phases: 1 draft
       
   438   content-divergent: 1 changesets
       
   439   evolve: (evolve --continue)
       
   440 
       
   441   $ echo resolved > d
       
   442   $ hg resolve -m d
       
   443   (no more unresolved files)
       
   444   continue: hg evolve --continue
       
   445 
       
   446   $ hg evolve --continue
       
   447   committed as bc1f4610744c
       
   448   working directory is now at bc1f4610744c
       
   449 
       
   450   $ hg export
       
   451   # HG changeset patch
       
   452   # User test
       
   453   # Date 0 0
       
   454   #      Thu Jan 01 00:00:00 1970 +0000
       
   455   # Node ID bc1f4610744c6aa0e851d3876a61bfff6243b31c
       
   456   # Parent  93cd84bbdacaeb8f881c29a609dbdd30c38cbc57
       
   457   phase-divergent update to 93cd84bbdaca:
       
   458   
       
   459   added c e
       
   460   
       
   461   diff -r 93cd84bbdaca -r bc1f4610744c d
       
   462   --- a/d	Thu Jan 01 00:00:00 1970 +0000
       
   463   +++ b/d	Thu Jan 01 00:00:00 1970 +0000
       
   464   @@ -1,1 +1,1 @@
       
   465   -dd
       
   466   +resolved
       
   467   diff -r 93cd84bbdaca -r bc1f4610744c e
       
   468   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   469   +++ b/e	Thu Jan 01 00:00:00 1970 +0000
       
   470   @@ -0,0 +1,1 @@
       
   471   +e
       
   472 
       
   473   $ hg evolve -l
       
   474   $ cd ..
       
   475 
       
   476 Test a pratical "rebase" case
       
   477 =============================
       
   478 
       
   479 Initial setup
       
   480 
       
   481   $ hg init rebase-divergence
       
   482   $ cd rebase-divergence
       
   483   $ echo root >> root
       
   484   $ hg add root
       
   485   $ hg commit -m root
       
   486   $ for x in c_A c_B c_C c_D; do
       
   487   >     echo $x >> $x
       
   488   >     hg add $x
       
   489   >     hg commit -m $x
       
   490   > done
       
   491 
       
   492   $ hg up 'desc("c_A")'
       
   493   0 files updated, 0 files merged, 3 files removed, 0 files unresolved
       
   494 
       
   495   $ for x in c_E c_F; do
       
   496   >     echo $x >> $x
       
   497   >     hg add $x
       
   498   >     hg commit -m $x
       
   499   > done
       
   500   created new head
       
   501 
       
   502 (creating divergence locally for simplicity)
       
   503 
       
   504   $ node=`hg log --rev 'desc("c_E")' -T '{node}'`
       
   505   $ hg rebase -s $node -d 'desc("c_B")'
       
   506   rebasing 5:4ab2719bbab9 "c_E"
       
   507   rebasing 6:77ccbf8d837e "c_F" (tip)
       
   508   $ hg phase --public tip
       
   509   $ hg rebase --hidden -s $node -d 'desc("c_C")' --config experimental.evolution.allowdivergence=yes
       
   510   rebasing 5:4ab2719bbab9 "c_E"
       
   511   rebasing 6:77ccbf8d837e "c_F"
       
   512   2 new content-divergent changesets
       
   513 
       
   514   $ hg sum
       
   515   parent: 8:a52ac76b45f5 
       
   516    c_F
       
   517   branch: default
       
   518   commit: (clean)
       
   519   update: 4 new changesets, 3 branch heads (merge)
       
   520   phases: 4 draft
       
   521   content-divergent: 2 changesets
       
   522   $ hg evolve --list
       
   523   b4a584aea4bd: c_E
       
   524     content-divergent: c7d2d47c7240 (public) (precursor 4ab2719bbab9)
       
   525   
       
   526   8ae8db670b4a: c_F
       
   527     content-divergent: a52ac76b45f5 (public) (precursor 77ccbf8d837e)
       
   528   
       
   529   $ hg log -G --patch
       
   530   *  changeset:   10:8ae8db670b4a
       
   531   |  tag:         tip
       
   532   |  user:        test
       
   533   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   534   |  instability: content-divergent
       
   535   |  summary:     c_F
       
   536   |
       
   537   |  diff -r b4a584aea4bd -r 8ae8db670b4a c_F
       
   538   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   539   |  +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
       
   540   |  @@ -0,0 +1,1 @@
       
   541   |  +c_F
       
   542   |
       
   543   *  changeset:   9:b4a584aea4bd
       
   544   |  parent:      3:abb77b893f28
       
   545   |  user:        test
       
   546   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   547   |  instability: content-divergent
       
   548   |  summary:     c_E
       
   549   |
       
   550   |  diff -r abb77b893f28 -r b4a584aea4bd c_E
       
   551   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   552   |  +++ b/c_E	Thu Jan 01 00:00:00 1970 +0000
       
   553   |  @@ -0,0 +1,1 @@
       
   554   |  +c_E
       
   555   |
       
   556   | @  changeset:   8:a52ac76b45f5
       
   557   | |  user:        test
       
   558   | |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   559   | |  summary:     c_F
       
   560   | |
       
   561   | |  diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
       
   562   | |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   563   | |  +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
       
   564   | |  @@ -0,0 +1,1 @@
       
   565   | |  +c_F
       
   566   | |
       
   567   | o  changeset:   7:c7d2d47c7240
       
   568   | |  parent:      2:eb1b4e1205b8
       
   569   | |  user:        test
       
   570   | |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   571   | |  summary:     c_E
       
   572   | |
       
   573   | |  diff -r eb1b4e1205b8 -r c7d2d47c7240 c_E
       
   574   | |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   575   | |  +++ b/c_E	Thu Jan 01 00:00:00 1970 +0000
       
   576   | |  @@ -0,0 +1,1 @@
       
   577   | |  +c_E
       
   578   | |
       
   579   +---o  changeset:   4:dbb960d6c97c
       
   580   | |    user:        test
       
   581   | |    date:        Thu Jan 01 00:00:00 1970 +0000
       
   582   | |    summary:     c_D
       
   583   | |
       
   584   | |    diff -r abb77b893f28 -r dbb960d6c97c c_D
       
   585   | |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   586   | |    +++ b/c_D	Thu Jan 01 00:00:00 1970 +0000
       
   587   | |    @@ -0,0 +1,1 @@
       
   588   | |    +c_D
       
   589   | |
       
   590   o |  changeset:   3:abb77b893f28
       
   591   |/   user:        test
       
   592   |    date:        Thu Jan 01 00:00:00 1970 +0000
       
   593   |    summary:     c_C
       
   594   |
       
   595   |    diff -r eb1b4e1205b8 -r abb77b893f28 c_C
       
   596   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   597   |    +++ b/c_C	Thu Jan 01 00:00:00 1970 +0000
       
   598   |    @@ -0,0 +1,1 @@
       
   599   |    +c_C
       
   600   |
       
   601   o  changeset:   2:eb1b4e1205b8
       
   602   |  user:        test
       
   603   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   604   |  summary:     c_B
       
   605   |
       
   606   |  diff -r e31751786014 -r eb1b4e1205b8 c_B
       
   607   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   608   |  +++ b/c_B	Thu Jan 01 00:00:00 1970 +0000
       
   609   |  @@ -0,0 +1,1 @@
       
   610   |  +c_B
       
   611   |
       
   612   o  changeset:   1:e31751786014
       
   613   |  user:        test
       
   614   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   615   |  summary:     c_A
       
   616   |
       
   617   |  diff -r 1e4be0697311 -r e31751786014 c_A
       
   618   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   619   |  +++ b/c_A	Thu Jan 01 00:00:00 1970 +0000
       
   620   |  @@ -0,0 +1,1 @@
       
   621   |  +c_A
       
   622   |
       
   623   o  changeset:   0:1e4be0697311
       
   624      user:        test
       
   625      date:        Thu Jan 01 00:00:00 1970 +0000
       
   626      summary:     root
       
   627   
       
   628      diff -r 000000000000 -r 1e4be0697311 root
       
   629      --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   630      +++ b/root	Thu Jan 01 00:00:00 1970 +0000
       
   631      @@ -0,0 +1,1 @@
       
   632      +root
       
   633   
       
   634 
       
   635 Run automatic evolution
       
   636 
       
   637   $ hg evolve --content-divergent --rev 'not public() and desc("c_E")::'
       
   638   merge:[7] c_E
       
   639   with: [9] c_E
       
   640   base: [5] c_E
       
   641   rebasing "other" content-divergent changeset b4a584aea4bd on eb1b4e1205b8
       
   642   updating to "local" side of the conflict: c7d2d47c7240
       
   643   merging "other" content-divergent changeset '0773642cfa95'
       
   644   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   645   1 new orphan changesets
       
   646   merge:[8] c_F
       
   647   with: [10] c_F
       
   648   base: [6] c_F
       
   649   rebasing "other" content-divergent changeset 8ae8db670b4a on c7d2d47c7240
       
   650   updating to "local" side of the conflict: a52ac76b45f5
       
   651   merging "other" content-divergent changeset '6a87ed4aa317'
       
   652   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   653   $ hg sum
       
   654   parent: 8:a52ac76b45f5 tip
       
   655    c_F
       
   656   branch: default
       
   657   commit: (clean)
       
   658   update: 2 new changesets, 2 branch heads (merge)
       
   659   phases: 2 draft
       
   660 
       
   661   $ hg evolve --list
       
   662 
       
   663   $ hg log -G --patch
       
   664   @  changeset:   8:a52ac76b45f5
       
   665   |  tag:         tip
       
   666   |  user:        test
       
   667   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   668   |  summary:     c_F
       
   669   |
       
   670   |  diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
       
   671   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   672   |  +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
       
   673   |  @@ -0,0 +1,1 @@
       
   674   |  +c_F
       
   675   |
       
   676   o  changeset:   7:c7d2d47c7240
       
   677   |  parent:      2:eb1b4e1205b8
       
   678   |  user:        test
       
   679   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   680   |  summary:     c_E
       
   681   |
       
   682   |  diff -r eb1b4e1205b8 -r c7d2d47c7240 c_E
       
   683   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   684   |  +++ b/c_E	Thu Jan 01 00:00:00 1970 +0000
       
   685   |  @@ -0,0 +1,1 @@
       
   686   |  +c_E
       
   687   |
       
   688   | o  changeset:   4:dbb960d6c97c
       
   689   | |  user:        test
       
   690   | |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   691   | |  summary:     c_D
       
   692   | |
       
   693   | |  diff -r abb77b893f28 -r dbb960d6c97c c_D
       
   694   | |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   695   | |  +++ b/c_D	Thu Jan 01 00:00:00 1970 +0000
       
   696   | |  @@ -0,0 +1,1 @@
       
   697   | |  +c_D
       
   698   | |
       
   699   | o  changeset:   3:abb77b893f28
       
   700   |/   user:        test
       
   701   |    date:        Thu Jan 01 00:00:00 1970 +0000
       
   702   |    summary:     c_C
       
   703   |
       
   704   |    diff -r eb1b4e1205b8 -r abb77b893f28 c_C
       
   705   |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   706   |    +++ b/c_C	Thu Jan 01 00:00:00 1970 +0000
       
   707   |    @@ -0,0 +1,1 @@
       
   708   |    +c_C
       
   709   |
       
   710   o  changeset:   2:eb1b4e1205b8
       
   711   |  user:        test
       
   712   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   713   |  summary:     c_B
       
   714   |
       
   715   |  diff -r e31751786014 -r eb1b4e1205b8 c_B
       
   716   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   717   |  +++ b/c_B	Thu Jan 01 00:00:00 1970 +0000
       
   718   |  @@ -0,0 +1,1 @@
       
   719   |  +c_B
       
   720   |
       
   721   o  changeset:   1:e31751786014
       
   722   |  user:        test
       
   723   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   724   |  summary:     c_A
       
   725   |
       
   726   |  diff -r 1e4be0697311 -r e31751786014 c_A
       
   727   |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   728   |  +++ b/c_A	Thu Jan 01 00:00:00 1970 +0000
       
   729   |  @@ -0,0 +1,1 @@
       
   730   |  +c_A
       
   731   |
       
   732   o  changeset:   0:1e4be0697311
       
   733      user:        test
       
   734      date:        Thu Jan 01 00:00:00 1970 +0000
       
   735      summary:     root
       
   736   
       
   737      diff -r 000000000000 -r 1e4be0697311 root
       
   738      --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   739      +++ b/root	Thu Jan 01 00:00:00 1970 +0000
       
   740      @@ -0,0 +1,1 @@
       
   741      +root
       
   742   
       
   743   $ hg export tip
       
   744   # HG changeset patch
       
   745   # User test
       
   746   # Date 0 0
       
   747   #      Thu Jan 01 00:00:00 1970 +0000
       
   748   # Node ID a52ac76b45f523a039fc4a938d79874f4bdb1a85
       
   749   # Parent  c7d2d47c7240562be5cbd1a24080dd0396178709
       
   750   c_F
       
   751   
       
   752   diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
       
   753   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   754   +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
       
   755   @@ -0,0 +1,1 @@
       
   756   +c_F
       
   757 
       
   758   $ hg obslog --rev a52ac76b45f5
       
   759   @    a52ac76b45f5 (8) c_F
       
   760   |\
       
   761   x |  6a87ed4aa317 (12) c_F
       
   762   | |    rewritten as a52ac76b45f5 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
       
   763   | |
       
   764   x |  8ae8db670b4a (10) c_F
       
   765   |/     rewritten(parent) as 6a87ed4aa317 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
       
   766   |
       
   767   x  77ccbf8d837e (6) c_F
       
   768        rewritten(parent) as 8ae8db670b4a using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
       
   769        rewritten(parent) as a52ac76b45f5 using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
       
   770