subrepo: lazily update git's local tracking branches
This continues the strategy of separation between hg pull and hg update in
git subrepos by only dealing with git's branches on an update. This behavior
tries to cover the bare essentials of the semantics of git pull in the subrepo
when the parent repo does hg pull and hg update.
#!/bin/sh
echo "[extensions]" >> $HGRCPATH
echo "mq=">> $HGRCPATH
teststrip() {
hg -q up -C $1
echo % before update $1, strip $2
hg parents
chmod -$3 $4
hg strip $2 2>&1 | sed 's/\(bundle\).*/\1/' | sed 's/Permission denied.*\.hg\/store\/\(.*\)/Permission denied \.hg\/store\/\1/'
echo % after update $1, strip $2
chmod +$3 $4
hg verify
echo % journal contents
if [ -f .hg/store/journal ]; then
sed -e 's/\.i[^\n]*/\.i/' .hg/store/journal
else
echo "(no journal)"
fi
ls .hg/store/journal >/dev/null 2>&1 && hg recover
ls .hg/strip-backup/* >/dev/null 2>&1 && hg unbundle -q .hg/strip-backup/*
rm -rf .hg/strip-backup
}
hg init test
cd test
echo a > a
hg -q ci -m "a" -A
echo b > b
hg -q ci -m "b" -A
echo b2 >> b
hg -q ci -m "b2" -A
echo c > c
hg -q ci -m "c" -A
teststrip 0 2 w .hg/store/data/b.i
teststrip 0 2 r .hg/store/data/b.i
teststrip 0 2 w .hg/store/00manifest.i