]> git.pld-linux.org Git - packages/rpm-build-tools.git/blob - purge-packages.sh
do not purge if stash list not empty
[packages/rpm-build-tools.git] / purge-packages.sh
1 #!/bin/sh
2 # Purges packages/ checkouts
3 # - if package has clean state, the dir is removed
4 # - otherwise git gc is called
5 set -e
6
7 topdir=$(rpm -E %_topdir)
8 purgedir=$topdir/purged
9 cd "$topdir"
10
11 if [ -d "$purgedir" ]; then
12         echo >&2 "Previous pruge dir exists: $purgedir, remove it to resume"
13         exit 1
14 fi
15
16 install -d $purgedir
17 for pkg in */.git; do
18         pkg=${pkg%/.git}
19         cd "$pkg"
20         status=$(git status --porcelain)
21         stash=$(git stash list)
22
23         # FIXME: does not currently handle if some pushes are not made!
24         if [ -n "$status" ] || [ -n "$stash" ]; then
25                 cat <<-EOF
26                 * Package $pkg - Untracked files or stash not empty. Invoke gc
27
28                 $status
29                 EOF
30                 git gc
31         else
32                 cat <<-EOF
33                 * Package $pkg - State clean. Removing
34                 EOF
35                 mv ../$pkg $purgedir
36         fi
37         cd ..
38 done
39
40 rmdir --ignore-fail-on-non-empty $purgedir
This page took 0.043622 seconds and 4 git commands to generate.