mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 00:45:18 +03:00
e55703261f
For example, given 1 (branch a) -> 2 (branch b) -> 3 (branch a) I expect "hg heads a" to show only 3. Discovered by running hg heads HEAD on the mutt repo, where older clients committed default on top of HEAD.
114 lines
1.9 KiB
Bash
Executable File
114 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
branchcache=.hg/branchheads.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"
|
|
|
|
echo % there should be only one default branch head
|
|
hg heads .
|
|
|
|
hg co foo
|
|
hg branch
|
|
echo bleah > a
|
|
hg ci -m "modify a branch" -d "1000000 0"
|
|
|
|
hg merge default
|
|
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
|
|
|
|
echo % test merging, add 3 default heads and one test head
|
|
cd ..
|
|
hg init merges
|
|
cd merges
|
|
echo a > a
|
|
hg ci -Ama
|
|
|
|
echo b > b
|
|
hg ci -Amb
|
|
|
|
hg up 0
|
|
echo c > c
|
|
hg ci -Amc
|
|
|
|
hg up 0
|
|
echo d > d
|
|
hg ci -Amd
|
|
|
|
hg up 0
|
|
hg branch test
|
|
echo e >> e
|
|
hg ci -Ame
|
|
|
|
hg log
|
|
|
|
echo % implicit merge with test branch as parent
|
|
hg merge
|
|
hg up -C default
|
|
echo % implicit merge with default branch as parent
|
|
hg merge
|
|
echo % 3 branch heads, explicit merge required
|
|
hg merge 2
|
|
hg ci -m merge
|
|
echo % 2 branch heads, implicit merge works
|
|
hg merge
|