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