windows: avoid deleting non-empty reparse points
If a hg repository including working directory is a reparse point (directory
symlinked or a junction point), then using os.removedirs will remove the
reparse point erroneously. This is fixed by only removing directories if they
are empty.
#!/bin/sh
echo '[extensions]' >> $HGRCPATH
echo 'hgext.mq =' >> $HGRCPATH
hg init repo
cd repo
echo foo > foo
hg ci -qAm 'add a file'
hg qinit
hg qnew foo
echo foo >> foo
hg qrefresh -m 'append foo'
hg qnew bar
echo bar >> foo
hg qrefresh -m 'append bar'
echo '% try to commit on top of a patch'
echo quux >> foo
hg ci -m 'append quux'
# cheat a bit...
mv .hg/patches .hg/patches2
hg ci -m 'append quux'
mv .hg/patches2 .hg/patches
echo '% qpop/qrefresh on the wrong revision'
hg qpop
hg qpop -n patches 2>&1 | sed -e 's/\(using patch queue:\).*/\1/'
hg qrefresh
hg up -C qtip
echo '% qpop'
hg qpop
echo '% qrefresh'
hg qrefresh
echo '% tip:'
hg tip --template '#rev# #desc#\n'