daemons/gc,update: Nicer progress prints
[girocco.git] / daemons / gc.sh
blobd8ce17d2ad69ed46d59ee4aa80a4e2a020242862
1 #!/bin/bash
3 . @basedir@/shlib.sh
5 set -e
7 proj="$1"
8 cd "$cfg_reporoot/$proj.git"
10 progress "+ [$proj] garbage check (`date`)"
12 # safe pruning: we put all our objects to all forks, then we can
13 # safely get rid of extra ones; repacks in forks will get rid of
14 # the redundant ones again then
15 forkdir="$1"
16 if [ -d "$forkdir" ]; then
17 get_repo_list "$forkdir/" |
18 while read fork; do
19 # Match objects in parent project
20 for d in objects/?? objects/pack; do
21 [ "$d" != "objects/??" ] || continue
22 mkdir -p "$cfg_reporoot/$forkdir/$fork.git/$d"
23 ln -f "$d"/* "$cfg_reporoot/$forkdir/$fork.git/$d"
24 done
25 done
28 quiet=; [ -n "$show_progress" ] || quiet=-q
29 git repack -A -d --window-memory=3G -l $quiet
30 git prune
31 git update-server-info
32 config_set lastgc "$(date -R)"
34 progress "- [$proj] garbage check (`date`)"