tests/test-newbranch
author Maxim Dounin <mdounin@mdounin.ru>
Wed, 07 May 2008 14:32:00 +0400
changeset 6651 7f0dd352fb4d
parent 6160 3ee3bc5d06c5
child 6723 1fe6f365df2e
permissions -rwxr-xr-x
addremove: correctly handle intermediate symlinks This fixes problems mentioned in issue660 comments (unrelated to original issue) where directory was renamed, and symlink was added instead. In such situation addremove wasn't able to correctly detect that old files no longer here, but tried to add symlink (and failed due collision with old files).

#!/bin/sh

branchcache=.hg/branch.cache

hg init t
cd t
hg branches

echo foo > a
hg add a
hg ci -m "initial" -d "1000000 0"
hg branch foo
hg branch
hg ci -m "add branch name" -d "1000000 0"
hg branch bar
hg ci -m "change branch name" -d "1000000 0"
echo % branch shadowing
hg branch default
hg branch -f default
hg ci -m "clear branch name" -d "1000000 0"

hg co foo
hg branch
echo bleah > a
hg ci -m "modify a branch" -d "1000000 0"

hg merge
hg branch
hg ci -m "merge" -d "1000000 0"
hg log

hg branches
hg branches -q

echo % test for invalid branch cache
hg rollback
cp $branchcache .hg/bc-invalid
hg log -r foo
cp .hg/bc-invalid $branchcache
hg --debug log -r foo
rm $branchcache
echo corrupted > $branchcache
hg log -qr foo
cat $branchcache

echo % push should update the branch cache
hg init ../target
echo % pushing just rev 0
hg push -qr 0 ../target
cat ../target/$branchcache
echo % pushing everything
hg push -qf ../target
cat ../target/$branchcache

echo % update with no arguments: tipmost revision of the current branch
hg up -q -C 0
hg up -q
hg id
hg up -q 1
hg up -q
hg id
hg branch foobar
hg up

echo % fastforward merge
hg branch ff
echo ff > ff
hg ci -Am'fast forward' -d '1000000 0'
hg up foo
hg merge ff
hg branch
hg commit -m'Merge ff into foo' -d '1000000 0'
hg parents
hg manifest

exit 0