tests/test-evolve-public-content-divergent-discard.t
changeset 4582 985d4c1336f6
parent 4530 d081cc4f5fef
child 4583 4fcf9a71befc
equal deleted inserted replaced
4581:48521a49a07e 4582:985d4c1336f6
       
     1 ===============================================================================
       
     2 Tests the resolution of public content divergence: when merging leads to public
       
     3 ===============================================================================
       
     4 
       
     5 This file intend to cover all the cases possible when merging the other
       
     6 divergent cset into public cset leads to public cset itself.
       
     7 Possible variants are:
       
     8 
       
     9 parent: same/different
       
    10 relocation: [no-]conflict
       
    11 merging: [no-]conflict
       
    12 
       
    13 Setup
       
    14 =====
       
    15   $ cat >> $HGRCPATH <<EOF
       
    16   > [alias]
       
    17   > glog = log -GT "{rev}:{node|short} {desc|firstline}\n {phase} {troubles}\n\n"
       
    18   > [phases]
       
    19   > publish = False
       
    20   > [extensions]
       
    21   > rebase =
       
    22   > EOF
       
    23   $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
       
    24 
       
    25 Testing when same parent, no conflict:
       
    26 --------------------------------------
       
    27 
       
    28   $ hg init pubdiv1
       
    29   $ cd pubdiv1
       
    30   $ for ch in a b c; do
       
    31   >   echo $ch > $ch;
       
    32   >   hg ci -Am "added "$ch;
       
    33   > done;
       
    34   adding a
       
    35   adding b
       
    36   adding c
       
    37 
       
    38   $ hg up .^
       
    39   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
    40   $ echo ch > ch
       
    41   $ hg add ch
       
    42   $ hg ci -m "added ch"
       
    43   created new head
       
    44 
       
    45   $ hg up .^
       
    46   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
    47   $ echo ch > ch
       
    48   $ hg add ch
       
    49   $ hg ci -m "added c"
       
    50   created new head
       
    51 
       
    52   $ hg glog
       
    53   @  4:f7c1071f1e7c added c
       
    54   |   draft
       
    55   |
       
    56   | o  3:90522bccf499 added ch
       
    57   |/    draft
       
    58   |
       
    59   | o  2:155349b645be added c
       
    60   |/    draft
       
    61   |
       
    62   o  1:5f6d8a4bf34a added b
       
    63   |   draft
       
    64   |
       
    65   o  0:9092f1db7931 added a
       
    66       draft
       
    67   
       
    68 
       
    69   $ hg prune 2 -s 3
       
    70   1 changesets pruned
       
    71   $ hg prune 2 -s 4 --hidden
       
    72   1 changesets pruned
       
    73   2 new content-divergent changesets
       
    74   $ hg phase --public -r 4
       
    75 
       
    76   $ hg glog
       
    77   @  4:f7c1071f1e7c added c
       
    78   |   public
       
    79   |
       
    80   | *  3:90522bccf499 added ch
       
    81   |/    draft content-divergent
       
    82   |
       
    83   o  1:5f6d8a4bf34a added b
       
    84   |   public
       
    85   |
       
    86   o  0:9092f1db7931 added a
       
    87       public
       
    88   
       
    89   $ hg evolve --content-divergent --any
       
    90   merge:[4] added c
       
    91   with: [3] added ch
       
    92   base: [2] added c
       
    93   merging "other" content-divergent changeset '90522bccf499'
       
    94   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    95   content-divergent changesets differ by descriptions only, discarding 90522bccf499
       
    96 
       
    97   $ hg evolve -l
       
    98 
       
    99   $ hg par
       
   100   changeset:   4:f7c1071f1e7c
       
   101   tag:         tip
       
   102   parent:      1:5f6d8a4bf34a
       
   103   user:        test
       
   104   date:        Thu Jan 01 00:00:00 1970 +0000
       
   105   summary:     added c
       
   106   
       
   107   $ cd ..
       
   108 
       
   109 Testing when different parent, no conflict:
       
   110 -------------------------------------------
       
   111 
       
   112   $ hg init pubdiv2
       
   113   $ cd pubdiv2
       
   114   $ for ch in a b c d; do
       
   115   >   echo $ch > $ch;
       
   116   >   hg ci -Am "added "$ch;
       
   117   > done;
       
   118   adding a
       
   119   adding b
       
   120   adding c
       
   121   adding d
       
   122 
       
   123   $ hg up 1
       
   124   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   125   $ echo dh > dh
       
   126   $ hg add dh
       
   127   $ hg ci -m "added dh"
       
   128   created new head
       
   129 
       
   130   $ hg up 2
       
   131   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   132   $ echo dh > dh
       
   133   $ hg add dh
       
   134   $ hg ci -m "added d"
       
   135   created new head
       
   136 
       
   137   $ hg glog
       
   138   @  5:e800202333a4 added d
       
   139   |   draft
       
   140   |
       
   141   | o  4:5acd58ef5066 added dh
       
   142   | |   draft
       
   143   | |
       
   144   +---o  3:9150fe93bec6 added d
       
   145   | |     draft
       
   146   | |
       
   147   o |  2:155349b645be added c
       
   148   |/    draft
       
   149   |
       
   150   o  1:5f6d8a4bf34a added b
       
   151   |   draft
       
   152   |
       
   153   o  0:9092f1db7931 added a
       
   154       draft
       
   155   
       
   156 
       
   157   $ hg prune 3 -s 4
       
   158   1 changesets pruned
       
   159   $ hg prune 3 -s 5 --hidden
       
   160   1 changesets pruned
       
   161   2 new content-divergent changesets
       
   162   $ hg phase --public -r 5
       
   163 
       
   164   $ hg glog
       
   165   @  5:e800202333a4 added d
       
   166   |   public
       
   167   |
       
   168   | *  4:5acd58ef5066 added dh
       
   169   | |   draft content-divergent
       
   170   | |
       
   171   o |  2:155349b645be added c
       
   172   |/    public
       
   173   |
       
   174   o  1:5f6d8a4bf34a added b
       
   175   |   public
       
   176   |
       
   177   o  0:9092f1db7931 added a
       
   178       public
       
   179   
       
   180   $ hg evolve --content-divergent --any
       
   181   merge:[5] added d
       
   182   with: [4] added dh
       
   183   base: [3] added d
       
   184   rebasing "other" content-divergent changeset 5acd58ef5066 on 155349b645be
       
   185   updating to "local" side of the conflict: e800202333a4
       
   186   merging "other" content-divergent changeset 'ae3429430ef1'
       
   187   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   188   content-divergent changesets differ by descriptions only, discarding ae3429430ef1
       
   189 
       
   190   $ hg evolve -l
       
   191 
       
   192   $ hg par
       
   193   changeset:   5:e800202333a4
       
   194   tag:         tip
       
   195   parent:      2:155349b645be
       
   196   user:        test
       
   197   date:        Thu Jan 01 00:00:00 1970 +0000
       
   198   summary:     added d
       
   199   
       
   200   $ cd ..
       
   201 
       
   202 Testing when same parent, merging conflict:
       
   203 -------------------------------------------
       
   204 
       
   205   $ hg init pubdiv3
       
   206   $ cd pubdiv3
       
   207   $ for ch in a b c; do
       
   208   >   echo $ch > $ch;
       
   209   >   hg ci -Am "added "$ch;
       
   210   > done;
       
   211   adding a
       
   212   adding b
       
   213   adding c
       
   214 
       
   215   $ hg up .^
       
   216   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   217   $ echo chconflict > ch
       
   218   $ hg add ch
       
   219   $ hg ci -m "added ch"
       
   220   created new head
       
   221 
       
   222   $ hg up .^
       
   223   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   224   $ echo ch > ch
       
   225   $ hg add ch
       
   226   $ hg ci -m "added c"
       
   227   created new head
       
   228 
       
   229   $ hg glog
       
   230   @  4:f7c1071f1e7c added c
       
   231   |   draft
       
   232   |
       
   233   | o  3:229da2719b19 added ch
       
   234   |/    draft
       
   235   |
       
   236   | o  2:155349b645be added c
       
   237   |/    draft
       
   238   |
       
   239   o  1:5f6d8a4bf34a added b
       
   240   |   draft
       
   241   |
       
   242   o  0:9092f1db7931 added a
       
   243       draft
       
   244   
       
   245 
       
   246   $ hg prune 2 -s 3
       
   247   1 changesets pruned
       
   248   $ hg prune 2 -s 4 --hidden
       
   249   1 changesets pruned
       
   250   2 new content-divergent changesets
       
   251   $ hg phase --public -r 4
       
   252 
       
   253   $ hg glog
       
   254   @  4:f7c1071f1e7c added c
       
   255   |   public
       
   256   |
       
   257   | *  3:229da2719b19 added ch
       
   258   |/    draft content-divergent
       
   259   |
       
   260   o  1:5f6d8a4bf34a added b
       
   261   |   public
       
   262   |
       
   263   o  0:9092f1db7931 added a
       
   264       public
       
   265   
       
   266   $ hg evolve --content-divergent --any
       
   267   merge:[4] added c
       
   268   with: [3] added ch
       
   269   base: [2] added c
       
   270   merging "other" content-divergent changeset '229da2719b19'
       
   271   merging ch
       
   272   warning: conflicts while merging ch! (edit, then use 'hg resolve --mark')
       
   273   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
   274   fix conflicts and see `hg help evolve.interrupted`
       
   275   [1]
       
   276 
       
   277   $ hg diff
       
   278   diff -r f7c1071f1e7c ch
       
   279   --- a/ch	Thu Jan 01 00:00:00 1970 +0000
       
   280   +++ b/ch	Thu Jan 01 00:00:00 1970 +0000
       
   281   @@ -1,1 +1,5 @@
       
   282   +<<<<<<< local: f7c1071f1e7c - test: added c
       
   283    ch
       
   284   +=======
       
   285   +chconflict
       
   286   +>>>>>>> other: 229da2719b19 - test: added ch
       
   287 
       
   288   $ echo ch > ch
       
   289   $ hg res -m
       
   290   (no more unresolved files)
       
   291   continue: hg evolve --continue
       
   292 
       
   293   $ hg evolve --continue
       
   294   content-divergent changesets differ by descriptions only, discarding 229da2719b19
       
   295   working directory is now at f7c1071f1e7c
       
   296 
       
   297   $ hg evolve -l
       
   298 
       
   299   $ hg par
       
   300   changeset:   4:f7c1071f1e7c
       
   301   tag:         tip
       
   302   parent:      1:5f6d8a4bf34a
       
   303   user:        test
       
   304   date:        Thu Jan 01 00:00:00 1970 +0000
       
   305   summary:     added c
       
   306   
       
   307   $ cd ..
       
   308 
       
   309 Testing when different parent, relocation conflict:
       
   310 ---------------------------------------------------
       
   311 
       
   312   $ hg init pubdiv4
       
   313   $ cd pubdiv4
       
   314   $ for ch in a b c d; do
       
   315   >   echo $ch > $ch;
       
   316   >   hg ci -Am "added "$ch;
       
   317   > done;
       
   318   adding a
       
   319   adding b
       
   320   adding c
       
   321   adding d
       
   322 
       
   323   $ hg up 1
       
   324   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   325   $ echo dh > dh
       
   326   $ echo cc > c
       
   327   $ hg add dh c
       
   328   $ hg ci -m "added dh"
       
   329   created new head
       
   330 
       
   331   $ hg up 2
       
   332   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   333   $ echo dh > dh
       
   334   $ hg add dh
       
   335   $ hg ci -m "added d"
       
   336   created new head
       
   337 
       
   338   $ hg glog
       
   339   @  5:e800202333a4 added d
       
   340   |   draft
       
   341   |
       
   342   | o  4:f89a8e2f86ac added dh
       
   343   | |   draft
       
   344   | |
       
   345   +---o  3:9150fe93bec6 added d
       
   346   | |     draft
       
   347   | |
       
   348   o |  2:155349b645be added c
       
   349   |/    draft
       
   350   |
       
   351   o  1:5f6d8a4bf34a added b
       
   352   |   draft
       
   353   |
       
   354   o  0:9092f1db7931 added a
       
   355       draft
       
   356   
       
   357 
       
   358   $ hg prune 3 -s 4
       
   359   1 changesets pruned
       
   360   $ hg prune 3 -s 5 --hidden
       
   361   1 changesets pruned
       
   362   2 new content-divergent changesets
       
   363   $ hg phase --public -r 5
       
   364 
       
   365   $ hg glog
       
   366   @  5:e800202333a4 added d
       
   367   |   public
       
   368   |
       
   369   | *  4:f89a8e2f86ac added dh
       
   370   | |   draft content-divergent
       
   371   | |
       
   372   o |  2:155349b645be added c
       
   373   |/    public
       
   374   |
       
   375   o  1:5f6d8a4bf34a added b
       
   376   |   public
       
   377   |
       
   378   o  0:9092f1db7931 added a
       
   379       public
       
   380   
       
   381   $ hg evolve --content-divergent --any
       
   382   merge:[5] added d
       
   383   with: [4] added dh
       
   384   base: [3] added d
       
   385   rebasing "other" content-divergent changeset f89a8e2f86ac on 155349b645be
       
   386   merging c
       
   387   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
   388   fix conflicts and see `hg help evolve.interrupted`
       
   389   [1]
       
   390 
       
   391   $ echo c > c
       
   392   $ hg res -m
       
   393   (no more unresolved files)
       
   394   continue: hg evolve --continue
       
   395 
       
   396   $ hg evolve --continue
       
   397   evolving 4:f89a8e2f86ac "added dh"
       
   398   updating to "local" side of the conflict: e800202333a4
       
   399   merging "other" content-divergent changeset 'bc309da55b88'
       
   400   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   401   content-divergent changesets differ by descriptions only, discarding bc309da55b88
       
   402   working directory is now at e800202333a4
       
   403 
       
   404   $ hg evolve -l
       
   405 
       
   406   $ hg par
       
   407   changeset:   5:e800202333a4
       
   408   tag:         tip
       
   409   parent:      2:155349b645be
       
   410   user:        test
       
   411   date:        Thu Jan 01 00:00:00 1970 +0000
       
   412   summary:     added d
       
   413   
       
   414   $ cd ..
       
   415 
       
   416 Testing when different parent, merging conflict:
       
   417 ------------------------------------------------
       
   418 
       
   419   $ hg init pubdiv5
       
   420   $ cd pubdiv5
       
   421   $ for ch in a b c d; do
       
   422   >   echo $ch > $ch;
       
   423   >   hg ci -Am "added "$ch;
       
   424   > done;
       
   425   adding a
       
   426   adding b
       
   427   adding c
       
   428   adding d
       
   429 
       
   430   $ hg up 1
       
   431   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   432   $ echo dhconflict > dh
       
   433   $ hg add dh
       
   434   $ hg ci -m "added dh"
       
   435   created new head
       
   436 
       
   437   $ hg up 2
       
   438   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   439   $ echo dh > dh
       
   440   $ hg add dh
       
   441   $ hg ci -m "added d"
       
   442   created new head
       
   443 
       
   444   $ hg glog
       
   445   @  5:e800202333a4 added d
       
   446   |   draft
       
   447   |
       
   448   | o  4:db0b7bba0aae added dh
       
   449   | |   draft
       
   450   | |
       
   451   +---o  3:9150fe93bec6 added d
       
   452   | |     draft
       
   453   | |
       
   454   o |  2:155349b645be added c
       
   455   |/    draft
       
   456   |
       
   457   o  1:5f6d8a4bf34a added b
       
   458   |   draft
       
   459   |
       
   460   o  0:9092f1db7931 added a
       
   461       draft
       
   462   
       
   463 
       
   464   $ hg prune 3 -s 4
       
   465   1 changesets pruned
       
   466   $ hg prune 3 -s 5 --hidden
       
   467   1 changesets pruned
       
   468   2 new content-divergent changesets
       
   469   $ hg phase --public -r 5
       
   470 
       
   471   $ hg glog
       
   472   @  5:e800202333a4 added d
       
   473   |   public
       
   474   |
       
   475   | *  4:db0b7bba0aae added dh
       
   476   | |   draft content-divergent
       
   477   | |
       
   478   o |  2:155349b645be added c
       
   479   |/    public
       
   480   |
       
   481   o  1:5f6d8a4bf34a added b
       
   482   |   public
       
   483   |
       
   484   o  0:9092f1db7931 added a
       
   485       public
       
   486   
       
   487   $ hg evolve --content-divergent --any
       
   488   merge:[5] added d
       
   489   with: [4] added dh
       
   490   base: [3] added d
       
   491   rebasing "other" content-divergent changeset db0b7bba0aae on 155349b645be
       
   492   updating to "local" side of the conflict: e800202333a4
       
   493   merging "other" content-divergent changeset 'a5bbf2042450'
       
   494   merging dh
       
   495   warning: conflicts while merging dh! (edit, then use 'hg resolve --mark')
       
   496   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
   497   fix conflicts and see `hg help evolve.interrupted`
       
   498   [1]
       
   499 
       
   500   $ echo dh > dh
       
   501   $ hg res -m
       
   502   (no more unresolved files)
       
   503   continue: hg evolve --continue
       
   504 
       
   505   $ hg evolve --continue
       
   506   content-divergent changesets differ by descriptions only, discarding a5bbf2042450
       
   507   working directory is now at e800202333a4
       
   508 
       
   509   $ hg evolve -l
       
   510 
       
   511   $ hg par
       
   512   changeset:   5:e800202333a4
       
   513   tag:         tip
       
   514   parent:      2:155349b645be
       
   515   user:        test
       
   516   date:        Thu Jan 01 00:00:00 1970 +0000
       
   517   summary:     added d
       
   518   
       
   519   $ cd ..
       
   520 
       
   521 Testing when different parent, conflict in relocation and merging:
       
   522 ------------------------------------------------------------------
       
   523 
       
   524   $ hg init pubdiv6
       
   525   $ cd pubdiv6
       
   526   $ for ch in a b c d; do
       
   527   >   echo $ch > $ch;
       
   528   >   hg ci -Am "added "$ch;
       
   529   > done;
       
   530   adding a
       
   531   adding b
       
   532   adding c
       
   533   adding d
       
   534 
       
   535   $ hg up 1
       
   536   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   537   $ echo dhconflict > dh
       
   538   $ echo cc > c
       
   539   $ hg add dh c
       
   540   $ hg ci -m "added dh"
       
   541   created new head
       
   542 
       
   543   $ hg up 2
       
   544   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   545   $ echo dh > dh
       
   546   $ hg add dh
       
   547   $ hg ci -m "added d"
       
   548   created new head
       
   549 
       
   550   $ hg glog
       
   551   @  5:e800202333a4 added d
       
   552   |   draft
       
   553   |
       
   554   | o  4:67b19bbd770f added dh
       
   555   | |   draft
       
   556   | |
       
   557   +---o  3:9150fe93bec6 added d
       
   558   | |     draft
       
   559   | |
       
   560   o |  2:155349b645be added c
       
   561   |/    draft
       
   562   |
       
   563   o  1:5f6d8a4bf34a added b
       
   564   |   draft
       
   565   |
       
   566   o  0:9092f1db7931 added a
       
   567       draft
       
   568   
       
   569 
       
   570   $ hg prune 3 -s 4
       
   571   1 changesets pruned
       
   572   $ hg prune 3 -s 5 --hidden
       
   573   1 changesets pruned
       
   574   2 new content-divergent changesets
       
   575   $ hg phase --public -r 5
       
   576 
       
   577   $ hg glog
       
   578   @  5:e800202333a4 added d
       
   579   |   public
       
   580   |
       
   581   | *  4:67b19bbd770f added dh
       
   582   | |   draft content-divergent
       
   583   | |
       
   584   o |  2:155349b645be added c
       
   585   |/    public
       
   586   |
       
   587   o  1:5f6d8a4bf34a added b
       
   588   |   public
       
   589   |
       
   590   o  0:9092f1db7931 added a
       
   591       public
       
   592   
       
   593   $ hg evolve --content-divergent --any
       
   594   merge:[5] added d
       
   595   with: [4] added dh
       
   596   base: [3] added d
       
   597   rebasing "other" content-divergent changeset 67b19bbd770f on 155349b645be
       
   598   merging c
       
   599   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
   600   fix conflicts and see `hg help evolve.interrupted`
       
   601   [1]
       
   602 
       
   603   $ echo c > c
       
   604   $ hg res -m
       
   605   (no more unresolved files)
       
   606   continue: hg evolve --continue
       
   607 
       
   608   $ hg evolve --continue
       
   609   evolving 4:67b19bbd770f "added dh"
       
   610   updating to "local" side of the conflict: e800202333a4
       
   611   merging "other" content-divergent changeset '09054d1f3c97'
       
   612   merging dh
       
   613   warning: conflicts while merging dh! (edit, then use 'hg resolve --mark')
       
   614   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
   615   fix conflicts and see `hg help evolve.interrupted`
       
   616   [1]
       
   617 
       
   618   $ echo dh > dh
       
   619   $ hg res -m
       
   620   (no more unresolved files)
       
   621   continue: hg evolve --continue
       
   622 
       
   623   $ hg evolve --continue
       
   624   content-divergent changesets differ by descriptions only, discarding 09054d1f3c97
       
   625   working directory is now at e800202333a4
       
   626 
       
   627   $ hg evolve -l
       
   628 
       
   629   $ hg par
       
   630   changeset:   5:e800202333a4
       
   631   tag:         tip
       
   632   parent:      2:155349b645be
       
   633   user:        test
       
   634   date:        Thu Jan 01 00:00:00 1970 +0000
       
   635   summary:     added d
       
   636   
       
   637   $ cd ..