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