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