Merge branch 'en/rebase-against-rebase-fix' into maint
[git] / contrib / examples / git-gc.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2006, Shawn O. Pearce
4 #
5 # Cleanup unreachable files and optimize the repository.
6
7 USAGE='[--prune]'
8 SUBDIRECTORY_OK=Yes
9 . git-sh-setup
10
11 no_prune=:
12 while test $# != 0
13 do
14         case "$1" in
15         --prune)
16                 no_prune=
17                 ;;
18         --)
19                 usage
20                 ;;
21         esac
22         shift
23 done
24
25 case "$(git config --get gc.packrefs)" in
26 notbare|"")
27         test $(is_bare_repository) = true || pack_refs=true;;
28 *)
29         pack_refs=$(git config --bool --get gc.packrefs)
30 esac
31
32 test "true" != "$pack_refs" ||
33 git pack-refs --prune &&
34 git reflog expire --all &&
35 git-repack -a -d -l &&
36 $no_prune git prune &&
37 git rerere gc || exit