sapling/tests/test-mq-caches
John Mulligan 9e580fc6f7 store all heads of a branch in the branch cache
All heads of branches will be stored in a new cache file 'branchheads.cache'
within the .hg directory. The old 'branch.cache' file from older versions
will be ignored.

The new cache contents are formatted line-by-line as '{node} {branchtag}\n'.
This is the same as the previous format. Now, every head is recorded in
an oldest -> tipmost order.

The localrepo.branchheads function is reworked to use the data from the cache.
2009-01-14 21:47:38 -05:00

79 lines
1.3 KiB
Bash
Executable File

#!/bin/sh
branches=.hg/branchheads.cache
echo '[extensions]' >> $HGRCPATH
echo 'hgext.mq=' >> $HGRCPATH
show_branch_cache()
{
# force cache (re)generation
hg log -r does-not-exist 2> /dev/null
hg log -r tip --template 'tip: #rev#\n'
if [ -f $branches ]; then
sort $branches
else
echo No branch cache
fi
if [ "$1" = 1 ]; then
for b in foo bar; do
hg log -r $b --template "branch $b: "'#rev#\n'
done
fi
}
hg init a
cd a
hg qinit -c
echo '# mq patch on an empty repo'
hg qnew p1
show_branch_cache
echo > pfile
hg add pfile
hg qrefresh -m 'patch 1'
show_branch_cache
echo
echo '# some regular revisions'
hg qpop
echo foo > foo
hg add foo
echo foo > .hg/branch
hg ci -m 'branch foo' -d '1000000 0'
echo bar > bar
hg add bar
echo bar > .hg/branch
hg ci -m 'branch bar' -d '1000000 0'
show_branch_cache
echo
echo '# add some mq patches'
hg qpush
show_branch_cache
hg qnew p2
echo foo > .hg/branch
echo foo2 >> foo
hg qrefresh -m 'patch 2'
show_branch_cache 1
echo
echo '# removing the cache'
rm $branches
show_branch_cache 1
echo
echo '# importing rev 1 (the cache now ends in one of the patches)'
hg qimport -r 1 -n p0
show_branch_cache 1
hg log -r qbase --template 'qbase: #rev#\n'
echo
echo '# detect an invalid cache'
hg qpop -a
hg qpush -a
show_branch_cache