|
|
#!/bin/sh
|
|
|
|
|
|
heads()
|
|
|
{
|
|
|
hg heads --template '{rev}: {desc|firstline|strip} ({branches})\n' "$@"
|
|
|
}
|
|
|
|
|
|
hg init a
|
|
|
cd a
|
|
|
echo 'root' >root
|
|
|
hg add root
|
|
|
hg commit -m "Adding root node"
|
|
|
heads
|
|
|
echo '-------'
|
|
|
heads .
|
|
|
|
|
|
echo '======='
|
|
|
echo 'a' >a
|
|
|
hg add a
|
|
|
hg branch a
|
|
|
hg commit -m "Adding a branch"
|
|
|
heads
|
|
|
echo '-------'
|
|
|
heads .
|
|
|
|
|
|
echo '======='
|
|
|
hg update -C 0
|
|
|
echo 'b' >b
|
|
|
hg add b
|
|
|
hg branch b
|
|
|
hg commit -m "Adding b branch"
|
|
|
heads
|
|
|
echo '-------'
|
|
|
heads .
|
|
|
|
|
|
echo '======='
|
|
|
echo 'bh1' >bh1
|
|
|
hg add bh1
|
|
|
hg commit -m "Adding b branch head 1"
|
|
|
heads
|
|
|
echo '-------'
|
|
|
heads .
|
|
|
|
|
|
echo '======='
|
|
|
hg update -C 2
|
|
|
echo 'bh2' >bh2
|
|
|
hg add bh2
|
|
|
hg commit -m "Adding b branch head 2"
|
|
|
heads
|
|
|
echo '-------'
|
|
|
heads .
|
|
|
|
|
|
echo '======='
|
|
|
hg update -C 2
|
|
|
echo 'bh3' >bh3
|
|
|
hg add bh3
|
|
|
hg commit -m "Adding b branch head 3"
|
|
|
heads
|
|
|
echo '-------'
|
|
|
heads .
|
|
|
|
|
|
echo '======='
|
|
|
hg merge 4
|
|
|
hg commit -m "Merging b branch head 2 and b branch head 3"
|
|
|
heads
|
|
|
echo '-------'
|
|
|
heads .
|
|
|
|
|
|
echo '======='
|
|
|
echo 'c' >c
|
|
|
hg add c
|
|
|
hg branch c
|
|
|
hg commit -m "Adding c branch"
|
|
|
heads
|
|
|
echo '-------'
|
|
|
heads .
|
|
|
|
|
|
echo '======='
|
|
|
heads -r 3 .
|
|
|
echo $?
|
|
|
echo '-------'
|
|
|
heads -r 2 .
|
|
|
echo $?
|
|
|
echo '-------'
|
|
|
hg update -C 4
|
|
|
echo $?
|
|
|
echo '-------'
|
|
|
heads -r 3 .
|
|
|
echo $?
|
|
|
echo '-------'
|
|
|
heads -r 2 .
|
|
|
echo $?
|
|
|
echo '-------'
|
|
|
heads -r 7 .
|
|
|
echo $?
|
|
|
|
|
|
echo '======='
|
|
|
for i in 0 1 2 3 4 5 6 7; do
|
|
|
hg update -C "$i"
|
|
|
heads
|
|
|
echo '-------'
|
|
|
heads .
|
|
|
echo '-------'
|
|
|
done
|
|
|
|
|
|
echo '======='
|
|
|
for i in a b c z; do
|
|
|
heads "$i"
|
|
|
echo '-------'
|
|
|
done
|
|
|
|
|
|
echo '======='
|
|
|
heads 0 1 2 3 4 5 6 7
|
|
|
|
|
|
echo '% topological heads'
|
|
|
heads -t
|
|
|
|
|
|
echo '______________'
|
|
|
cd ..
|
|
|
|
|
|
hg init newheadmsg
|
|
|
cd newheadmsg
|
|
|
|
|
|
echo '% created new head message'
|
|
|
echo '% init: no msg'
|
|
|
echo 1 > a
|
|
|
hg ci -Am "a0: Initial root"
|
|
|
echo 2 >> a
|
|
|
hg ci -m "a1 (HN)"
|
|
|
|
|
|
hg branch b
|
|
|
echo 1 > b
|
|
|
hg ci -Am "b2: Initial root for branch b"
|
|
|
echo 2 >> b
|
|
|
hg ci -m "b3 (HN)"
|
|
|
|
|
|
echo '% case NN: msg'
|
|
|
hg up -q null
|
|
|
hg branch -f b
|
|
|
echo 1 > bb
|
|
|
hg ci -Am "b4 (NN): new topo root for branch b"
|
|
|
|
|
|
echo '% case HN: no msg'
|
|
|
echo 2 >> bb
|
|
|
hg ci -m "b5 (HN)"
|
|
|
|
|
|
echo '% case BN: msg'
|
|
|
hg branch -f default
|
|
|
echo 1 > aa
|
|
|
hg ci -Am "a6 (BN): new branch root"
|
|
|
|
|
|
echo '% case CN: msg'
|
|
|
hg up -q 4
|
|
|
echo 3 >> bbb
|
|
|
hg ci -Am "b7 (CN): regular new head"
|
|
|
|
|
|
echo '% case BB: msg'
|
|
|
hg up -q 4
|
|
|
hg merge -q 3
|
|
|
hg branch -f default
|
|
|
hg ci -m "a8 (BB): weird new branch root"
|
|
|
|
|
|
echo '% case CB: msg'
|
|
|
hg up -q 4
|
|
|
hg merge -q 1
|
|
|
hg ci -m "b9 (CB): new head from branch merge"
|
|
|
|
|
|
echo '% case HB: no msg'
|
|
|
hg up -q 7
|
|
|
hg merge -q 6
|
|
|
hg ci -m "b10 (HB): continuing head from branch merge"
|
|
|
|
|
|
echo '% case CC: msg'
|
|
|
hg up -q 4
|
|
|
hg merge -q 2
|
|
|
hg ci -m "b11 (CC): new head from merge"
|
|
|
|
|
|
echo '% case CH: no msg'
|
|
|
hg up -q 2
|
|
|
hg merge -q 10
|
|
|
hg ci -m "b12 (CH): continuing head from merge"
|
|
|
|
|
|
echo '% case HH: no msg'
|
|
|
hg merge -q 3
|
|
|
hg ci -m "b12 (HH): merging two heads"
|
|
|
|
|
|
|