subrepo: correctly handle update -C with modified subrepos (
issue2022)
(based on a patch by Saint Germain)
#!/bin/sh
catpatch() {
cat $1 | sed -e "s/^\(# Parent \).*/\1/"
}
echo "[extensions]" >> $HGRCPATH
echo "mq=" >> $HGRCPATH
runtest() {
hg init mq
cd mq
echo a > a
hg ci -Ama
echo '% qnew should refuse bad patch names'
hg qnew series
hg qnew status
hg qnew guards
hg qnew .hgignore
hg qnew .mqfoo
hg qnew 'foo#bar'
hg qnew 'foo:bar'
hg qinit -c
echo '% qnew with uncommitted changes'
echo a > somefile
hg add somefile
hg qnew uncommitted.patch
hg st
hg qseries
echo '% qnew implies add'
hg -R .hg/patches st
echo '% qnew missing'
hg qnew missing.patch missing
echo '% qnew -m'
hg qnew -m 'foo bar' mtest.patch
catpatch .hg/patches/mtest.patch
echo '% qnew twice'
hg qnew first.patch
hg qnew first.patch
touch ../first.patch
hg qimport ../first.patch
echo '% qnew -f from a subdirectory'
hg qpop -a
mkdir d
cd d
echo b > b
hg ci -Am t
echo b >> b
hg st
hg qnew -g -f p
catpatch ../.hg/patches/p
echo '% qnew -u with no username configured'
HGUSER= hg qnew -u blue red
catpatch ../.hg/patches/red
echo '% fail when trying to import a merge'
hg init merge
cd merge
touch a
hg ci -Am null
echo a >> a
hg ci -m a
hg up -r 0
echo b >> a
hg ci -m b
hg merge -f 1
hg resolve --mark a
hg qnew -f merge
cd ../../..
rm -r mq
}
echo '%%% plain headers'
echo "[mq]" >> $HGRCPATH
echo "plain=true" >> $HGRCPATH
mkdir sandbox
(cd sandbox ; runtest)
rm -r sandbox
echo '%%% hg headers'
echo "plain=false" >> $HGRCPATH
mkdir sandbox
(cd sandbox ; runtest)
rm -r sandbox
exit 0