X-Git-Url: http://git.pld-linux.org/?p=packages%2Frpm-build-tools.git;a=blobdiff_plain;f=purge-packages.sh;h=04158b699f0e1ff7ee9cad51e1fcc88bf55a6e67;hp=d93e6df77c905546d627bd7648d1ffaa1b9dd21a;hb=1fd85958b8deba0d10a59a4e50b2943fb1b0b6df;hpb=8ccb0f4c1306829837d03edfe7838b69706852de diff --git a/purge-packages.sh b/purge-packages.sh index d93e6df..04158b6 100755 --- a/purge-packages.sh +++ b/purge-packages.sh @@ -1,25 +1,32 @@ #!/bin/sh # Purges packages/ checkouts -# - if package has clean state, the dir is removed -# - otherwise git gc is called +# +# - if package has clean state, the dir is cleaned up (moved to purge dir) +# - otherwise git gc is called if CALL_GC=yes +# Stashes aside packages/ that do not have .git dir +# - these dirs are usually created by rpmbuild if Name does not match .spec file + set -e -CALL_GC=${CALL_GC:-'no'} +CALL_GC=${CALL_GC:-no} -topdir=$(rpm -E %_topdir) +topdir="${1:-$(rpm -E %_topdir)}" +topdir=$(readlink -f "$topdir") purgedir=$topdir/purged +stashdir=$topdir/stashed cd "$topdir" echo "Purging in $topdir, press ENTER to continue" read a if [ -d "$purgedir" ]; then - echo >&2 "Previous pruge dir exists: $purgedir, remove it to resume" + echo >&2 "Previous pruge dir exists: $purgedir, remove it to continue" exit 1 fi install -d $purgedir for pkg in */.git; do + continue pkg=${pkg%/.git} cd "$pkg" purge='yes' @@ -52,7 +59,7 @@ for pkg in */.git; do done if [ "$purge" = 'yes' ]; then cat <<-EOF - * Package $pkg - State clean. Removing + * Package $pkg - State clean. Purging EOF mv ../$pkg $purgedir fi } @@ -61,4 +68,25 @@ done rmdir --ignore-fail-on-non-empty $purgedir +# go over packages that do not have .git +if [ -d "$stashdir" ]; then + echo >&2 "Previous stash dir exists: $stashdir, remove it to continue" + exit 1 +fi +install -d $stashdir +stashdir=$(readlink -f $stashdir) +for pkg in */; do + # skip symlinks + test -L "${pkg%/}" && continue + # skip packages which do have .git + test -d "$pkg/.git" && continue + # skip if it's the stash dir itself + pkg=$(readlink -f $pkg) + test "$pkg" = "$stashdir" && continue + + echo "* Package $pkg does not have .git, stashing" + mv $pkg $stashdir +done +rmdir --ignore-fail-on-non-empty $stashdir + # vi:syntax=sh:ts=4:sw=4:noet