tests/test-unstable-content-divergent.t
changeset 4494 89efbe6bf920
parent 4493 32446b7a6e7c
child 4495 48e9169633ef
equal deleted inserted replaced
4493:32446b7a6e7c 4494:89efbe6bf920
     1 ==========================================
       
     2 Tests the resolution of content-divergence
       
     3 ==========================================
       
     4 
       
     5   $ cat >> $HGRCPATH <<EOF
       
     6   > [defaults]
       
     7   > amend=-d "0 0"
       
     8   > fold=-d "0 0"
       
     9   > [web]
       
    10   > push_ssl = false
       
    11   > allow_push = *
       
    12   > [phases]
       
    13   > publish = False
       
    14   > [diff]
       
    15   > git = 1
       
    16   > unified = 0
       
    17   > [ui]
       
    18   > logtemplate = {rev}:{node|short}@{branch}({phase}) {desc|firstline} [{troubles}]\n
       
    19   > [extensions]
       
    20   > EOF
       
    21   $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
       
    22   $ mkcommit() {
       
    23   >    echo "$1" > "$1"
       
    24   >    hg add "$1"
       
    25   >    hg ci -m "add $1"
       
    26   > }
       
    27 
       
    28   $ mkcommits() {
       
    29   >   for i in $@; do mkcommit $i ; done
       
    30   > }
       
    31 
       
    32 Basic test of divergence:
       
    33 -------------------------
       
    34 
       
    35 two divergent changesets with the same parents
       
    36 With --all --any we dedupe the divergent and solve the divergence once
       
    37 
       
    38   $ hg init test1
       
    39   $ cd test1
       
    40   $ echo a > a
       
    41   $ hg ci -Aqm "added a"
       
    42   $ echo b > b
       
    43   $ hg ci -Aqm "added b"
       
    44 
       
    45   $ hg up .^
       
    46   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
    47   $ echo bdivergent > bdivergent1
       
    48   $ hg ci -Am "divergent"
       
    49   adding bdivergent1
       
    50   created new head
       
    51 
       
    52   $ hg up .^
       
    53   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
    54   $ echo bdivergent > bdivergent2
       
    55   $ hg ci -Am "divergent"
       
    56   adding bdivergent2
       
    57   created new head
       
    58 
       
    59   $ hg prune -s 8374d2ddc3a4 "desc('added b')"
       
    60   1 changesets pruned
       
    61   $ hg prune -s 593c57f2117e "desc('added b')" --hidden
       
    62   1 changesets pruned
       
    63   2 new content-divergent changesets
       
    64 
       
    65   $ hg log -G
       
    66   @  3:8374d2ddc3a4@default(draft) divergent [content-divergent]
       
    67   |
       
    68   | *  2:593c57f2117e@default(draft) divergent [content-divergent]
       
    69   |/
       
    70   o  0:9092f1db7931@default(draft) added a []
       
    71   
       
    72 
       
    73   $ hg evolve --all --any --content-divergent
       
    74   merge:[2] divergent
       
    75   with: [3] divergent
       
    76   base: [1] added b
       
    77   updating to "local" side of the conflict: 593c57f2117e
       
    78   merging "other" content-divergent changeset '8374d2ddc3a4'
       
    79   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    80   working directory is now at 45bf1312f454
       
    81   $ hg log -G
       
    82   @  4:45bf1312f454@default(draft) divergent []
       
    83   |
       
    84   o  0:9092f1db7931@default(draft) added a []
       
    85   
       
    86 
       
    87 Test divergence resolution when it yields to an empty commit (issue4950)
       
    88 ------------------------------------------------------------------------
       
    89 
       
    90 cdivergent2 contains the same content than cdivergent1 and they are divergent
       
    91 versions of the revision _c
       
    92 
       
    93   $ hg up .^
       
    94   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
    95   $ mkcommit _c
       
    96   created new head
       
    97 
       
    98   $ hg up .^
       
    99   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   100   $ mkcommit cdivergent1
       
   101   created new head
       
   102 
       
   103   $ hg up .^
       
   104   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   105   $ echo "cdivergent1" > cdivergent1
       
   106   $ hg add cdivergent1
       
   107   $ hg ci -m "add _c"
       
   108   created new head
       
   109 
       
   110   $ hg log -G
       
   111   @  7:b2ae71172042@default(draft) add _c []
       
   112   |
       
   113   | o  6:e3ff64ce8d4c@default(draft) add cdivergent1 []
       
   114   |/
       
   115   | o  5:48819a835615@default(draft) add _c []
       
   116   |/
       
   117   | o  4:45bf1312f454@default(draft) divergent []
       
   118   |/
       
   119   o  0:9092f1db7931@default(draft) added a []
       
   120   
       
   121 
       
   122   $ hg prune -s b2ae71172042 48819a835615
       
   123   1 changesets pruned
       
   124   $ hg prune -s e3ff64ce8d4c 48819a835615 --hidden
       
   125   1 changesets pruned
       
   126   2 new content-divergent changesets
       
   127 
       
   128   $ hg log -G
       
   129   @  7:b2ae71172042@default(draft) add _c [content-divergent]
       
   130   |
       
   131   | *  6:e3ff64ce8d4c@default(draft) add cdivergent1 [content-divergent]
       
   132   |/
       
   133   | o  4:45bf1312f454@default(draft) divergent []
       
   134   |/
       
   135   o  0:9092f1db7931@default(draft) added a []
       
   136   
       
   137   $ hg evolve --all --any --content-divergent
       
   138   merge:[6] add cdivergent1
       
   139   with: [7] add _c
       
   140   base: [5] add _c
       
   141   updating to "local" side of the conflict: e3ff64ce8d4c
       
   142   merging "other" content-divergent changeset 'b2ae71172042'
       
   143   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   144   nothing changed
       
   145   working directory is now at e3ff64ce8d4c
       
   146 
       
   147   $ cd ..
       
   148 
       
   149 Test None docstring issue of evolve divergent, which caused hg crush
       
   150 --------------------------------------------------------------------
       
   151 
       
   152   $ hg init test2
       
   153   $ cd test2
       
   154   $ mkcommits _a _b
       
   155 
       
   156   $ hg up .^
       
   157   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   158   $ echo bdivergent > bdivergent11
       
   159   $ hg ci -Am "bdivergent"
       
   160   adding bdivergent11
       
   161   created new head
       
   162 
       
   163   $ hg up .^
       
   164   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   165   $ echo bdivergent > bdivergent22
       
   166   $ hg ci -Am "bdivergent"
       
   167   adding bdivergent22
       
   168   created new head
       
   169 
       
   170   $ hg log -G
       
   171   @  3:6b096fb45070@default(draft) bdivergent []
       
   172   |
       
   173   | o  2:05a6b6a9e633@default(draft) bdivergent []
       
   174   |/
       
   175   | o  1:37445b16603b@default(draft) add _b []
       
   176   |/
       
   177   o  0:135f39f4bd78@default(draft) add _a []
       
   178   
       
   179 
       
   180   $ hg prune -s 6b096fb45070 37445b16603b
       
   181   1 changesets pruned
       
   182   $ hg prune -s 05a6b6a9e633 37445b16603b --hidden
       
   183   1 changesets pruned
       
   184   2 new content-divergent changesets
       
   185   $ hg log -G
       
   186   @  3:6b096fb45070@default(draft) bdivergent [content-divergent]
       
   187   |
       
   188   | *  2:05a6b6a9e633@default(draft) bdivergent [content-divergent]
       
   189   |/
       
   190   o  0:135f39f4bd78@default(draft) add _a []
       
   191   
       
   192 
       
   193   $ cat >$TESTTMP/test_extension.py  << EOF
       
   194   > from mercurial import merge
       
   195   > origupdate = merge.update
       
   196   > def newupdate(*args, **kwargs):
       
   197   >   return origupdate(*args, **kwargs)
       
   198   > merge.update = newupdate
       
   199   > EOF
       
   200   $ cat >> $HGRCPATH << EOF
       
   201   > [extensions]
       
   202   > testextension=$TESTTMP/test_extension.py
       
   203   > EOF
       
   204   $ hg evolve --all
       
   205   nothing to evolve on current working copy parent
       
   206   (do you want to use --content-divergent)
       
   207   [2]
       
   208   $ hg evolve --content-divergent
       
   209   merge:[3] bdivergent
       
   210   with: [2] bdivergent
       
   211   base: [1] add _b
       
   212   merging "other" content-divergent changeset '05a6b6a9e633'
       
   213   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   214   working directory is now at 73ff357d3975
       
   215 
       
   216   $ cd ..