commands: label from user is in local encoding
repo.branchtags().keys() are in UTF-8, so the label should be converted to UTF-8
before checking for a naming conflict. Keep the original label for ui.status()
#!/bin/sh
hg init t
cd t
echo 1 > foo
hg ci -Am1 # 0
hg branch branchA
echo a1 > foo
hg ci -ma1 # 1
cd ..
hg init tt
cd tt
hg pull ../t
hg up branchA
cd ../t
echo a2 > foo
hg ci -ma2 # 2
echo % create branch B
hg up 0
hg branch branchB
echo b1 > foo
hg ci -mb1 # 3
cd ../tt
echo % a new branch is there
hg pull -u ../t
echo % develop both branch
cd ../t
hg up branchA
echo a3 > foo
hg ci -ma3 # 4
hg up branchB
echo b2 > foo
hg ci -mb2 # 5
cd ../tt
echo % should succeed, no new heads
hg pull -u ../t
echo % add an head on other branch
cd ../t
hg up branchA
echo a4 > foo
hg ci -ma4 # 6
hg up branchB
echo b3.1 > foo
hg ci -m b3.1 # 7
hg up 5
echo b3.2 > foo
hg ci -m b3.2 # 8
cd ../tt
echo % should succeed only one head on our branch
hg pull -u ../t
cd ../t
hg up -C branchA
echo a5.1 > foo
hg ci -ma5.1 # 9
hg up 6
echo a5.2 > foo
hg ci -ma5.2 # 10
hg up 7
echo b4.1 > foo
hg ci -m b4.1 # 11
hg up -C 8
echo b4.2 > foo
hg ci -m b4.2 # 12
cd ../tt
echo % should fail new head in our branch
hg pull -u ../t