rewriteutil: add a precheck function to validate rewrite beforehand
For now this only checks for changeset mutability and this is only used by
'checkfold'. We'll expand the checking and usage as we go.
+ − Test for stable ordering capabilities
+ − =====================================
+ −
+ − $ . $ TESTDIR / testlib / pythonpath . sh
+ −
+ − $ cat << EOF >> $ HGRCPATH
+ − > [ extensions ]
+ − > hgext3rd . evolve =
+ − > [ ui ]
+ − > logtemplate = " {rev} {node|short} {desc} {tags} \n "
+ − > [ alias ]
+ − > showsort = debugstablesort -- template = " {node|short} \n "
+ − > EOF
+ −
+ −
+ −
+ − $ checktopo () {
+ − > seen = 'null' ;
+ − > for node in ` hg showsort -- rev "$1" ` ; do
+ − > echo "=== checking $node ===" ;
+ − > hg log -- rev "($seen) and $node::" ;
+ − > seen = "$ {seen} +$ {node} " ;
+ − > done ;
+ − > }
+ −
+ − $ cat << EOF >> random_rev . py
+ − > import random
+ − > import sys
+ − >
+ − > loop = int ( sys . argv [ 1 ])
+ − > var = int ( sys . argv [ 2 ])
+ − > for x in range ( loop ):
+ − > print ( x + random . randint ( 0 , var ))
+ − > EOF
+ −
+ − Basic tests
+ − ===========
+ − ( no criss cross merge )
+ −
+ − Smoke tests
+ − -----------
+ −
+ − Starts with a "simple case"
+ −
+ − $ hg init repo_A
+ − $ cd repo_A
+ − $ hg debugbuilddag '
+ − > ..:g # 2 nodes, tagged "g"
+ − > <2.:h # another node base one -2 - > 0, tagged "h"
+ − > *1/2:m # merge -1 and -2 (1, 2), tagged "m"
+ − > <2+2:i # 2 nodes based on -2, tag head as "i"
+ − > .:c # 1 node tagged "c"
+ − > <m+3:a # 3 nodes base on the "m" tag
+ − > <2.:b # 1 node based on -2; tagged "b"
+ − > <m+2:d # 2 nodes from "m" tagged "d"
+ − > <2.:e # 1 node based on -2, tagged "e"
+ − > <m+1:f # 1 node based on "m" tagged "f"
+ − > <i/f # merge "i" and "f"
+ − > '
+ − $ hg log - G
+ − o 15 1 d8d22637c2d r15 tip
+ − | \
+ − | o 14 43227190 fef8 r14 f
+ − | |
+ − | | o 13 b4594d867745 r13 e
+ − | | |
+ − | | | o 12 e46a4836065c r12 d
+ − | | |/
+ − | | o 11 bab5d5bf48bd r11
+ − | |/
+ − | | o 10 ff43616e5d0f r10 b
+ − | | |
+ − | | | o 9 dcbb326fdec2 r9 a
+ − | | |/
+ − | | o 8 d62d843c9a01 r8
+ − | | |
+ − | | o 7 e7d9710d9fc6 r7
+ − | |/
+ − +--- o 6 2702 dd0c91e7 r6 c
+ − | |
+ − o | 5 f0f3ef9a6cd5 r5 i
+ − | |
+ − o | 4 4 c748ffd1a46 r4
+ − | |
+ − | o 3 2 b6d669947cd r3 m
+ − |/|
+ − o | 2 fa942426a6fd r2 h
+ − | |
+ − | o 1 66 f7d451a68b r1 g
+ − |/
+ − o 0 1 ea73414a91b r0
+ −
+ − $ hg showsort -- rev 'all()' -- traceback
+ − 1 ea73414a91b
+ − 66 f7d451a68b
+ − fa942426a6fd
+ − 2 b6d669947cd
+ − 43227190 fef8
+ − bab5d5bf48bd
+ − b4594d867745
+ − e46a4836065c
+ − e7d9710d9fc6
+ − d62d843c9a01
+ − dcbb326fdec2
+ − ff43616e5d0f
+ − 4 c748ffd1a46
+ − f0f3ef9a6cd5
+ − 1 d8d22637c2d
+ − 2702 dd0c91e7
+ −
+ − Verify the topological order
+ − ----------------------------
+ −
+ − Check we we did not issued a node before on ancestor
+ −
+ − output of log should be empty
+ −
+ − $ checktopo 'all()'
+ − === checking 1 ea73414a91b = ==
+ − === checking 66 f7d451a68b = ==
+ − === checking fa942426a6fd = ==
+ − === checking 2 b6d669947cd = ==
+ − === checking 43227190 fef8 = ==
+ − === checking bab5d5bf48bd = ==
+ − === checking b4594d867745 = ==
+ − === checking e46a4836065c = ==
+ − === checking e7d9710d9fc6 = ==
+ − === checking d62d843c9a01 = ==
+ − === checking dcbb326fdec2 = ==
+ − === checking ff43616e5d0f = ==
+ − === checking 4 c748ffd1a46 = ==
+ − === checking f0f3ef9a6cd5 = ==
+ − === checking 1 d8d22637c2d = ==
+ − === checking 2702 dd0c91e7 = ==
+ −
+ − Check stability
+ − = ==============
+ −
+ − have repo with changesets in orders
+ −
+ − $ cd ..
+ − $ hg - R repo_A log - G > A . log
+ − $ hg clone repo_A repo_B -- rev 5
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 4 changesets with 0 changes to 0 files
+ − updating to branch default
+ − 0 files updated , 0 files merged , 0 files removed , 0 files unresolved
+ − $ hg - R repo_B pull -- rev 13
+ − pulling from $ TESTTMP / repo_A ( glob )
+ − searching for changes
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 4 changesets with 0 changes to 0 files ( + 1 heads )
+ − ( run 'hg heads' to see heads , 'hg merge' to merge )
+ − $ hg - R repo_B pull -- rev 14
+ − pulling from $ TESTTMP / repo_A ( glob )
+ − searching for changes
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 1 changesets with 0 changes to 0 files ( + 1 heads )
+ − ( run 'hg heads .' to see heads , 'hg merge' to merge )
+ − $ hg - R repo_B pull
+ − pulling from $ TESTTMP / repo_A ( glob )
+ − searching for changes
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 7 changesets with 0 changes to 0 files ( + 3 heads )
+ − ( run 'hg heads .' to see heads , 'hg merge' to merge )
+ − $ hg - R repo_B log - G
+ − o 15 1 d8d22637c2d r15 tip
+ − | \
+ − | | o 14 e46a4836065c r12
+ − | | |
+ − | | | o 13 ff43616e5d0f r10
+ − | | | |
+ − | | | | o 12 dcbb326fdec2 r9
+ − | | | |/
+ − | | | o 11 d62d843c9a01 r8
+ − | | | |
+ − | | | o 10 e7d9710d9fc6 r7
+ − | | | |
+ − +------- o 9 2702 dd0c91e7 r6
+ − | | | |
+ − | o ---+ 8 43227190 fef8 r14
+ − | / /
+ − | +--- o 7 b4594d867745 r13
+ − | | |
+ − | o | 6 bab5d5bf48bd r11
+ − | |/
+ − | o 5 2 b6d669947cd r3
+ − | | \
+ − | | o 4 66 f7d451a68b r1
+ − | | |
+ − @ | | 3 f0f3ef9a6cd5 r5
+ − | | |
+ − o | | 2 4 c748ffd1a46 r4
+ − |/ /
+ − o / 1 fa942426a6fd r2
+ − |/
+ − o 0 1 ea73414a91b r0
+ −
+ − $ hg - R repo_B log - G > B . log
+ −
+ − $ hg clone repo_A repo_C -- rev 10
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 7 changesets with 0 changes to 0 files
+ − updating to branch default
+ − 0 files updated , 0 files merged , 0 files removed , 0 files unresolved
+ − $ hg - R repo_C pull -- rev 12
+ − pulling from $ TESTTMP / repo_A ( glob )
+ − searching for changes
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 2 changesets with 0 changes to 0 files ( + 1 heads )
+ − ( run 'hg heads' to see heads , 'hg merge' to merge )
+ − $ hg - R repo_C pull -- rev 15
+ − pulling from $ TESTTMP / repo_A ( glob )
+ − searching for changes
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 4 changesets with 0 changes to 0 files ( + 1 heads )
+ − ( run 'hg heads .' to see heads , 'hg merge' to merge )
+ − $ hg - R repo_C pull
+ − pulling from $ TESTTMP / repo_A ( glob )
+ − searching for changes
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 3 changesets with 0 changes to 0 files ( + 3 heads )
+ − ( run 'hg heads .' to see heads , 'hg merge' to merge )
+ − $ hg - R repo_C log - G
+ − o 15 b4594d867745 r13 tip
+ − |
+ − | o 14 dcbb326fdec2 r9
+ − | |
+ − | | o 13 2702 dd0c91e7 r6
+ − | | |
+ − | | | o 12 1 d8d22637c2d r15
+ − | | |/|
+ − | | | o 11 43227190 fef8 r14
+ − | | | |
+ − | | o | 10 f0f3ef9a6cd5 r5
+ − | | | |
+ − | | o | 9 4 c748ffd1a46 r4
+ − | | | |
+ − +------- o 8 e46a4836065c r12
+ − | | | |
+ − o -----+ 7 bab5d5bf48bd r11
+ − / / /
+ − +-----@ 6 ff43616e5d0f r10
+ − | | |
+ − o | | 5 d62d843c9a01 r8
+ − | | |
+ − o ---+ 4 e7d9710d9fc6 r7
+ − / /
+ − | o 3 2 b6d669947cd r3
+ − |/|
+ − o | 2 fa942426a6fd r2
+ − | |
+ − | o 1 66 f7d451a68b r1
+ − |/
+ − o 0 1 ea73414a91b r0
+ −
+ − $ hg - R repo_C log - G > C . log
+ −
+ − $ hg clone repo_A repo_D -- rev 2
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 2 changesets with 0 changes to 0 files
+ − updating to branch default
+ − 0 files updated , 0 files merged , 0 files removed , 0 files unresolved
+ − $ hg - R repo_D pull -- rev 10
+ − pulling from $ TESTTMP / repo_A ( glob )
+ − searching for changes
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 5 changesets with 0 changes to 0 files
+ − ( run 'hg update' to get a working copy )
+ − $ hg - R repo_D pull -- rev 15
+ − pulling from $ TESTTMP / repo_A ( glob )
+ − searching for changes
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 4 changesets with 0 changes to 0 files ( + 1 heads )
+ − ( run 'hg heads' to see heads , 'hg merge' to merge )
+ − $ hg - R repo_D pull
+ − pulling from $ TESTTMP / repo_A ( glob )
+ − searching for changes
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 5 changesets with 0 changes to 0 files ( + 4 heads )
+ − ( run 'hg heads .' to see heads , 'hg merge' to merge )
+ − $ hg - R repo_D log - G
+ − o 15 b4594d867745 r13 tip
+ − |
+ − | o 14 e46a4836065c r12
+ − |/
+ − o 13 bab5d5bf48bd r11
+ − |
+ − | o 12 dcbb326fdec2 r9
+ − | |
+ − | | o 11 2702 dd0c91e7 r6
+ − | | |
+ − | | | o 10 1 d8d22637c2d r15
+ − | | |/|
+ − +----- o 9 43227190 fef8 r14
+ − | | |
+ − | | o 8 f0f3ef9a6cd5 r5
+ − | | |
+ − | | o 7 4 c748ffd1a46 r4
+ − | | |
+ − | +--- o 6 ff43616e5d0f r10
+ − | | |
+ − | o | 5 d62d843c9a01 r8
+ − | | |
+ − | o | 4 e7d9710d9fc6 r7
+ − |/ /
+ − o | 3 2 b6d669947cd r3
+ − | \|
+ − o | 2 66 f7d451a68b r1
+ − | |
+ − | @ 1 fa942426a6fd r2
+ − |/
+ − o 0 1 ea73414a91b r0
+ −
+ − $ hg - R repo_D log - G > D . log
+ −
+ − check the log output are different
+ −
+ − $ python "$RUNTESTDIR/md5sum.py" *. log
+ − 55919 ebc9c02f28070cf3255b1690f8c A . log
+ − c6244b76a60d0707767dc71780e544f3 B . log
+ − 4 d8b08b8c50ecbdd2460a62e5852d84d C . log
+ − 0 f327003593b50b9591bea8ee28acb81 D . log
+ −
+ − bug stable ordering should be identical
+ − ---------------------------------------
+ −
+ − $ repos = "A B C D "
+ −
+ − for 'all()'
+ −
+ − $ for x in $ repos ; do
+ − > echo $ x
+ − > hg - R repo_ $ x showsort -- rev 'all()' > $ { x } . all . order ;
+ − > done
+ − A
+ − B
+ − C
+ − D
+ −
+ − $ python "$RUNTESTDIR/md5sum.py" *. all . order
+ − 0 c6b2e6f15249c0359b0f93e28c5bd1c A . all . order
+ − 0 c6b2e6f15249c0359b0f93e28c5bd1c B . all . order
+ − 0 c6b2e6f15249c0359b0f93e28c5bd1c C . all . order
+ − 0 c6b2e6f15249c0359b0f93e28c5bd1c D . all . order
+ −
+ − one specific head
+ −
+ − $ for x in $ repos ; do
+ − > hg - R repo_ $ x showsort -- rev 'b4594d867745' > $ { x } . b4594d867745 . order ;
+ − > done
+ −
+ − $ python "$RUNTESTDIR/md5sum.py" *. b4594d867745 . order
+ − 5 c40900a22008f24eab8dfe2f30ad79f A . b4594d867745 . order
+ − 5 c40900a22008f24eab8dfe2f30ad79f B . b4594d867745 . order
+ − 5 c40900a22008f24eab8dfe2f30ad79f C . b4594d867745 . order
+ − 5 c40900a22008f24eab8dfe2f30ad79f D . b4594d867745 . order
+ −
+ − one secific heads , that is a merge
+ −
+ − $ for x in $ repos ; do
+ − > hg - R repo_ $ x showsort -- rev '1d8d22637c2d' > $ { x } .1 d8d22637c2d . order ;
+ − > done
+ −
+ − $ python "$RUNTESTDIR/md5sum.py" * .1 d8d22637c2d . order
+ − 77 dc20a6f86db9103df8edaae9ad2754 A . 1 d8d22637c2d . order
+ − 77 dc20a6f86db9103df8edaae9ad2754 B . 1 d8d22637c2d . order
+ − 77 dc20a6f86db9103df8edaae9ad2754 C . 1 d8d22637c2d . order
+ − 77 dc20a6f86db9103df8edaae9ad2754 D . 1 d8d22637c2d . order
+ −
+ − changeset that are not heads
+ −
+ − $ for x in $ repos ; do
+ − > hg - R repo_ $ x showsort -- rev 'e7d9710d9fc6+43227190fef8' > $ { x } . non - heads . order ;
+ − > done
+ −
+ − $ python "$RUNTESTDIR/md5sum.py" *. non - heads . order
+ − 94e0 ea8cdade135dabde4ec5e9954329 A . non - heads . order
+ − 94e0 ea8cdade135dabde4ec5e9954329 B . non - heads . order
+ − 94e0 ea8cdade135dabde4ec5e9954329 C . non - heads . order
+ − 94e0 ea8cdade135dabde4ec5e9954329 D . non - heads . order
+ −
+ − Check with different subset
+ −
+ − $ hg clone repo_A repo_E -- rev "43227190fef8"
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 5 changesets with 0 changes to 0 files
+ − updating to branch default
+ − 0 files updated , 0 files merged , 0 files removed , 0 files unresolved
+ − $ hg - R repo_E pull -- rev e7d9710d9fc6
+ − pulling from $ TESTTMP / repo_A ( glob )
+ − searching for changes
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 1 changesets with 0 changes to 0 files ( + 1 heads )
+ − ( run 'hg heads' to see heads , 'hg merge' to merge )
+ −
+ − $ hg clone repo_A repo_F -- rev "1d8d22637c2d"
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 8 changesets with 0 changes to 0 files
+ − updating to branch default
+ − 0 files updated , 0 files merged , 0 files removed , 0 files unresolved
+ − $ hg - R repo_F pull -- rev d62d843c9a01
+ − pulling from $ TESTTMP / repo_A ( glob )
+ − searching for changes
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 2 changesets with 0 changes to 0 files ( + 1 heads )
+ − ( run 'hg heads' to see heads , 'hg merge' to merge )
+ −
+ − $ hg clone repo_A repo_G -- rev "e7d9710d9fc6"
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 5 changesets with 0 changes to 0 files
+ − updating to branch default
+ − 0 files updated , 0 files merged , 0 files removed , 0 files unresolved
+ − $ hg - R repo_G pull -- rev 43227190 fef8
+ − pulling from $ TESTTMP / repo_A ( glob )
+ − searching for changes
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 1 changesets with 0 changes to 0 files ( + 1 heads )
+ − ( run 'hg heads' to see heads , 'hg merge' to merge )
+ − $ hg - R repo_G pull -- rev 2702 dd0c91e7
+ − pulling from $ TESTTMP / repo_A ( glob )
+ − searching for changes
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 3 changesets with 0 changes to 0 files ( + 1 heads )
+ − ( run 'hg heads .' to see heads , 'hg merge' to merge )
+ −
+ − $ for x in E F G ; do
+ − > hg - R repo_ $ x showsort -- rev 'e7d9710d9fc6+43227190fef8' > $ { x } . non - heads . order ;
+ − > done
+ −
+ − $ python "$RUNTESTDIR/md5sum.py" *. non - heads . order
+ − 94e0 ea8cdade135dabde4ec5e9954329 A . non - heads . order
+ − 94e0 ea8cdade135dabde4ec5e9954329 B . non - heads . order
+ − 94e0 ea8cdade135dabde4ec5e9954329 C . non - heads . order
+ − 94e0 ea8cdade135dabde4ec5e9954329 D . non - heads . order
+ − 94e0 ea8cdade135dabde4ec5e9954329 E . non - heads . order
+ − 94e0 ea8cdade135dabde4ec5e9954329 F . non - heads . order
+ − 94e0 ea8cdade135dabde4ec5e9954329 G . non - heads . order
+ −
+ − Multiple recursions
+ − ===================
+ −
+ − $ hg init recursion_A
+ − $ cd recursion_A
+ − $ hg debugbuilddag '
+ − > .:base
+ − > +3:A
+ − > <base.:B
+ − > +2/A:C
+ − > <A+2:D
+ − > <B./D:E
+ − > +3:F
+ − > <C+3/E
+ − > +2
+ − > '
+ − $ hg log - G
+ − o 20 160 a7a0adbf4 r20 tip
+ − |
+ − o 19 1 c645e73dbc6 r19
+ − |
+ − o 18 04 96 f0a6a143 r18
+ − | \
+ − | o 17 d64d500024d1 r17
+ − | |
+ − | o 16 4 dbf739dd63f r16
+ − | |
+ − | o 15 9 fff0871d230 r15
+ − | |
+ − | | o 14 4 bbfc6078919 r14 F
+ − | | |
+ − | | o 13 013 b27f11536 r13
+ − | | |
+ − +--- o 12 a66b68853635 r12
+ − | |
+ − o | 11 0011 94 dd78d5 r11 E
+ − | \ \
+ − | o | 10 6 ee532b68cfa r10
+ − | | |
+ − o | | 9 529 dfc5bb875 r9 D
+ − | | |
+ − o | | 8 abf57d94268b r8
+ − | | |
+ − +--- o 7 5 f18015f9110 r7 C
+ − | | |
+ − | | o 6 a2f58e9c1e56 r6
+ − | | |
+ − | | o 5 3 a367db1fabc r5
+ − | |/
+ − | o 4 e7bd5218ca15 r4 B
+ − | |
+ − o | 3 2 dc09a01254d r3 A
+ − | |
+ − o | 2 01241442 b3c2 r2
+ − | |
+ − o | 1 66 f7d451a68b r1
+ − |/
+ − o 0 1 ea73414a91b r0 base
+ −
+ − $ hg showsort -- rev 'all()'
+ − 1 ea73414a91b
+ − 66 f7d451a68b
+ − 01241442 b3c2
+ − 2 dc09a01254d
+ − abf57d94268b
+ − 529 dfc5bb875
+ − e7bd5218ca15
+ − 3 a367db1fabc
+ − a2f58e9c1e56
+ − 5 f18015f9110
+ − 9 fff0871d230
+ − 4 dbf739dd63f
+ − d64d500024d1
+ − 6 ee532b68cfa
+ − 0011 94 dd78d5
+ − 04 96 f0a6a143
+ − 1 c645e73dbc6
+ − 160 a7a0adbf4
+ − a66b68853635
+ − 013 b27f11536
+ − 4 bbfc6078919
+ − $ checktopo 'all()'
+ − === checking 1 ea73414a91b ===
+ − === checking 66 f7d451a68b ===
+ − === checking 01241442 b3c2 ===
+ − === checking 2 dc09a01254d ===
+ − === checking abf57d94268b ===
+ − === checking 529 dfc5bb875 ===
+ − === checking e7bd5218ca15 ===
+ − === checking 3 a367db1fabc ===
+ − === checking a2f58e9c1e56 ===
+ − === checking 5 f18015f9110 ===
+ − === checking 9 fff0871d230 ===
+ − === checking 4 dbf739dd63f ===
+ − === checking d64d500024d1 ===
+ − === checking 6 ee532b68cfa ===
+ − === checking 0011 94 dd78d5 ===
+ − === checking 04 96 f0a6a143 ===
+ − === checking 1 c645e73dbc6 ===
+ − === checking 160 a7a0adbf4 ===
+ − === checking a66b68853635 ===
+ − === checking 013 b27f11536 ===
+ − === checking 4 bbfc6078919 ===
+ − $ hg showsort -- rev 'all()' > .. / multiple . source . order
+ − $ hg log - r tip
+ − 20 160 a7a0adbf4 r20 tip
+ − $ cd ..
+ −
+ − $ hg clone recursion_A recursion_random -- rev 0
+ − adding changesets
+ − adding manifests
+ − adding file changes
+ − added 1 changesets with 0 changes to 0 files
+ − updating to branch default
+ − 0 files updated , 0 files merged , 0 files removed , 0 files unresolved
+ − $ cd recursion_random
+ − $ for x in ` python .. / random_rev . py 15 5 ` ; do
+ − > # using python to benefit from the random seed
+ − > hg pull - r $ x -- quiet
+ − > done ;
+ − $ hg pull -- quiet
+ − $ hg showsort -- rev 'all()' > .. / multiple . random . order
+ − $ python "$RUNTESTDIR/md5sum.py" .. / multiple . * . order
+ − 6 ff802a0a5f0a3ddd82b25f860238fbd .. / multiple . random . order
+ − 6 ff802a0a5f0a3ddd82b25f860238fbd .. / multiple . source . order
+ − $ hg showsort -- rev 'all()'
+ − 1 ea73414a91b
+ − 66 f7d451a68b
+ − 01241442 b3c2
+ − 2 dc09a01254d
+ − abf57d94268b
+ − 529 dfc5bb875
+ − e7bd5218ca15
+ − 3 a367db1fabc
+ − a2f58e9c1e56
+ − 5 f18015f9110
+ − 9 fff0871d230
+ − 4 dbf739dd63f
+ − d64d500024d1
+ − 6 ee532b68cfa
+ − 0011 94 dd78d5
+ − 04 96 f0a6a143
+ − 1 c645e73dbc6
+ − 160 a7a0adbf4
+ − a66b68853635
+ − 013 b27f11536
+ − 4 bbfc6078919
+ − $ cd ..
+ −
+ −
+ − Test behavior with oedipus merges
+ − =================================
+ −
+ − $ hg init recursion_oedipus
+ − $ cd recursion_oedipus
+ − $ echo base > base
+ − $ hg add base
+ − $ hg ci - m base
+ − $ hg branch foo
+ − marked working directory as branch foo
+ − ( branches are permanent and global , did you want a bookmark ? )
+ − $ echo foo1 > foo1
+ − $ hg add foo1
+ − $ hg ci - m foo1
+ − $ echo foo2 > foo2
+ − $ hg add foo2
+ − $ hg ci - m foo2
+ − $ hg up default
+ − 0 files updated , 0 files merged , 2 files removed , 0 files unresolved
+ − $ hg merge foo
+ − 2 files updated , 0 files merged , 0 files removed , 0 files unresolved
+ − ( branch merge , don 't forget to commit)
+ − $ hg ci -m oedipus_merge
+ − $ echo default1 > default1
+ − $ hg add default1
+ − $ hg ci -m default1
+ − $ hg log -G
+ − @ 4 7f2454f6b04f default1 tip
+ − |
+ − o 3 ed776db7ed63 oedipus_merge
+ − | \
+ − | o 2 0dedbcd995b6 foo2
+ − | |
+ − | o 1 47da0f2c25e2 foo1
+ − |/
+ − o 0 d20a80d4def3 base
+ −
+ − $ hg showsort --rev ' . '
+ − d20a80d4def3
+ − 47da0f2c25e2
+ − 0dedbcd995b6
+ − ed776db7ed63
+ − 7f2454f6b04f