##// END OF EJS Templates
purge: abort with missing files avoiding problems with name-mangling fs...
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.

File last commit:

r4310:c8919eb0 default
r4310:c8919eb0 default
Show More
test-purge
99 lines | 1.8 KiB | text/plain | TextLexer
Emanuele Aina
Add a test for the purge extension
r4145 #!/bin/sh
cat <<EOF >> $HGRCPATH
[extensions]
purge=${TESTDIR}/../contrib/purge/purge.py
EOF
echo % init
hg init t
cd t
echo % setup
echo r1 > r1
hg ci -qAmr1 -d'0 0'
mkdir directory
echo r2 > directory/r2
hg ci -qAmr2 -d'1 0'
echo 'ignored' > .hgignore
hg ci -qAmr3 -d'2 0'
echo % delete an empty directory
mkdir empty_dir
hg purge -p
hg purge -v
ls
echo % delete an untracked directory
mkdir untracked_dir
touch untracked_dir/untracked_file1
touch untracked_dir/untracked_file2
hg purge -p
hg purge -v
ls
echo % delete an untracked file
touch untracked_file
hg purge -p
hg purge -v
ls
echo % delete an untracked file in a tracked directory
touch directory/untracked_file
hg purge -p
hg purge -v
ls
echo % delete nested directories
mkdir -p untracked_directory/nested_directory
hg purge -p
hg purge -v
ls
Alexis S. L. Carvalho
purge.py: fix invocation of statwalk
r4155 echo % delete nested directories from a subdir
mkdir -p untracked_directory/nested_directory
cd directory
hg purge -p
hg purge -v
cd ..
ls
echo % delete only part of the tree
mkdir -p untracked_directory/nested_directory
touch directory/untracked_file
cd directory
hg purge -p ../untracked_directory
hg purge -v ../untracked_directory
cd ..
ls
ls directory/untracked_file
rm directory/untracked_file
Emanuele Aina
Add a test for the purge extension
r4145 echo % delete ignored files
touch ignored
hg purge -p
hg purge -v
ls
Emanuele Aina
purge: abort with missing files avoiding problems with name-mangling fs...
r4310
echo % abort with missing files until we support name mangling filesystems
touch untracked_file
rm r1
# hide error messages to avoid changing the output when the text changes
hg purge -p 2> /dev/null
if [ $? -ne 0 ]; then
echo "refused to run"
fi
if [ -f untracked_file ]; then
echo "untracked_file still around"
fi
hg purge -p --force
hg purge -v 2> /dev/null
if [ $? -ne 0 ]; then
echo "refused to run"
fi
if [ -f untracked_file ]; then
echo "untracked_file still around"
fi
hg purge -v --force
hg revert --all --quiet
ls