Merge r7344 from trunk

git-svn-id: http://svn.code.sf.net/p/scst/svn/branches/3.3.x@7605 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Bart Van Assche
2018-11-04 01:06:07 +00:00
parent 14dc6b5c7c
commit 5f2ffab6f9

54
scripts/clean-source-tree Executable file
View File

@@ -0,0 +1,54 @@
#!/usr/bin/env bash
shopt -s nullglob
remove_empty_directories() {
find . -depth -type d |
sed 's|^\./||' |
grep -Ev '^\.$|^\.svn/|/\.svn/|/\.svn$|^\.hg/|^\.hg$|^\.git/|^\.git$' |
while read -r d; do
for f in "$d"/{*,.*}; do
if ! [ -e "$f" ]; then
rmdir "$d"
fi
break
done
done
}
if [ $# = 0 ]; then
# shellcheck source=clean-source-tree
. "$0" .
else
for d in "$@"; do
(
if cd "$d"; then
if [ -e .svn ]; then
if ! type -p svn >&/dev/null; then
echo "$0: svn: not found."
exit 0
fi
"$(dirname "$0")"/list-non-source-files |
while read -r f; do
if [ "$f" != "TAGS" ]; then rm -rf -- "$f"; fi;
done
elif [ -e .git ] || [ -e ../.git ]; then
if ! type -p git >&/dev/null; then
echo "$0: git: not found."
exit 0
fi
git clean -f -d -x -e TAGS >/dev/null
remove_empty_directories
elif [ -e .hg ] || [ -e ../.hg ]; then
if ! type -p hg >&/dev/null; then
echo "$0: hg: not found."
exit 0
fi
hg purge --all
else
echo "$0: $d: not administered by Subversion, Git or Mercurial."
fi
fi
)
done
fi