jobs/gc.sh: Simplify cd management, set -e
[girocco.git] / jobs / gc.sh
blob4910be5228f7ff5247e5277b081d60b0b92ea116
1 #!/bin/bash
3 . @basedir@/shlib.sh
5 set -e
7 repo="$1"
8 cd "$cfg_reporoot/$repo.git"
10 progress "+ `date` $repo"
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 git repack -A -d --window-memory=3G -l -q
29 git prune
30 git update-server-info
31 date -R >.last_gc
33 progress "- `date` $repo"