|
|
#!/bin/sh
|
|
|
|
|
|
cat <<EOF >> $HGRCPATH
|
|
|
[extensions]
|
|
|
hgext.purge=
|
|
|
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
|
|
|
touch untracked_file_readonly
|
|
|
python <<EOF
|
|
|
import os, stat
|
|
|
f= 'untracked_file_readonly'
|
|
|
os.chmod(f, os.stat(f).st_mode & ~stat.S_IWRITE)
|
|
|
EOF
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
|
|
echo % skip ignored files if --all not specified
|
|
|
touch ignored
|
|
|
hg purge -p
|
|
|
hg purge -v
|
|
|
ls
|
|
|
hg purge -p --all
|
|
|
hg purge -v --all
|
|
|
ls
|
|
|
|
|
|
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
|
|
|
hg st
|
|
|
|
|
|
hg purge -p
|
|
|
hg purge -v 2> /dev/null
|
|
|
hg st
|
|
|
|
|
|
hg purge -v
|
|
|
hg revert --all --quiet
|
|
|
hg st -a
|
|
|
|
|
|
echo '% tracked file in ignored directory (issue621)'
|
|
|
echo directory >> .hgignore
|
|
|
hg ci -m 'ignore directory'
|
|
|
touch untracked_file
|
|
|
hg purge -p
|
|
|
hg purge -v
|
|
|
|
|
|
echo % skip excluded files
|
|
|
touch excluded_file
|
|
|
hg purge -p -X excluded_file
|
|
|
hg purge -v -X excluded_file
|
|
|
ls
|
|
|
rm excluded_file
|
|
|
|
|
|
echo % skip files in excluded dirs
|
|
|
mkdir excluded_dir
|
|
|
touch excluded_dir/file
|
|
|
hg purge -p -X excluded_dir
|
|
|
hg purge -v -X excluded_dir
|
|
|
ls
|
|
|
ls excluded_dir
|
|
|
rm -R excluded_dir
|
|
|
|
|
|
echo % skip excluded empty dirs
|
|
|
mkdir excluded_dir
|
|
|
hg purge -p -X excluded_dir
|
|
|
hg purge -v -X excluded_dir
|
|
|
ls
|
|
|
rmdir excluded_dir
|
|
|
|
|
|
echo % skip patterns
|
|
|
mkdir .svn
|
|
|
touch .svn/foo
|
|
|
mkdir directory/.svn
|
|
|
touch directory/.svn/foo
|
|
|
hg purge -p -X .svn -X '*/.svn'
|
|
|
hg purge -p -X re:.*.svn
|
|
|
|