purge: abort with missing files avoiding problems with name-mangling fs
In a name mangling filesystem (e.g. a case insensitive one)
dirstate.walk() can yield filenames different from the ones
stored in the dirstate. This already confuses the status and
add commands, but with purge this may cause data loss.
To prevent this purge refuses to work if there are missing
files and has a 'force' option if the user knows it is safe.
Even with the force option purge checks if any of the missing
files is still available in the working dir: if so there
may be some problem with the underlying filesystem, so it
unconditionally aborts.
#!/bin/sh
# Environement setup for MQ
echo "[extensions]" >> $HGRCPATH
echo "mq=" >> $HGRCPATH
#Repo init
hg init
hg qinit
hg qnew -m "First commit message" first-patch
echo aaaa > file
hg add file
hg qrefresh
echo =======================
echo "Should display 'First commit message'"
hg log -l1 -v | sed -n '/description/,$p'
echo
# Testing changing message with -m
echo bbbb > file
hg qrefresh -m "Second commit message"
echo =======================
echo "Should display 'Second commit message'"
hg log -l1 -v | sed -n '/description/,$p'
echo
# Testing changing message with -l
echo "Third commit message" > logfile
echo " This is the 3rd log message" >> logfile
echo bbbb > file
hg qrefresh -l logfile
echo =======================
printf "Should display 'Third commit message\\\n This is the 3rd log message'\n"
hg log -l1 -v | sed -n '/description/,$p'
echo
# Testing changing message with -l-
hg qnew -m "First commit message" second-patch
echo aaaa > file2
hg add file2
echo bbbb > file2
(echo "Fifth commit message"
echo " This is the 5th log message" >> logfile) |\
hg qrefresh -l-
echo =======================
printf "Should display 'Fifth commit message\\\n This is the 5th log message'\n"
hg log -l1 -v | sed -n '/description/,$p'
echo