| #!/bin/sh |
| # |
| # Copyright (c) 2006, Shawn O. Pearce |
| # |
| # Cleanup unreachable files and optimize the repository. |
| |
| USAGE='[--prune]' |
| SUBDIRECTORY_OK=Yes |
| . git-sh-setup |
| |
| no_prune=: |
| while test $# != 0 |
| do |
| case "$1" in |
| --prune) |
| no_prune= |
| ;; |
| --) |
| usage |
| ;; |
| esac |
| shift |
| done |
| |
| case "$(git config --get gc.packrefs)" in |
| notbare|"") |
| test $(is_bare_repository) = true || pack_refs=true;; |
| *) |
| pack_refs=$(git config --bool --get gc.packrefs) |
| esac |
| |
| test "true" != "$pack_refs" || |
| git pack-refs --prune && |
| git reflog expire --all && |
| git-repack -a -d -l && |
| $no_prune git prune && |
| git rerere gc || exit |