view tests/test-bheads @ 12039:18e1e7520b67 stable

alias: make shadowing behavior more consistent (issue2054) Currently, given an alias like the following: [alias] summary = summary --remote The alias might be executed - or it might not - depending on the order of the cmdtable dict. This happens because cmdalias gets assigned back to the cmdtable like so: cmdtable['summary'] = ... Yet '^summary|sum' is still in the table, so which one cmdutil.findcmd() chooses isn't deterministic. This patch makes cmdalias assign back to '^summary|sum'. It uses the same cmdtable key lookup that extensions.wrapcommand() does.
author Brodie Rao <brodie@bitheap.org>
date Sat, 21 Aug 2010 22:48:14 -0400
parents 0a2762d83c53
children
line wrap: on
line source

#!/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"