Linus Torvalds | 839a7a0 | 2005-04-18 12:15:10 -0700 | [diff] [blame] | 1 | #!/bin/sh |
Linus Torvalds | b33e966 | 2005-07-08 10:57:21 -0700 | [diff] [blame] | 2 | |
Junio C Hamano | ae2b0f1 | 2005-11-24 00:12:11 -0800 | [diff] [blame] | 3 | . git-sh-setup |
Linus Torvalds | b33e966 | 2005-07-08 10:57:21 -0700 | [diff] [blame] | 4 | |
Junio C Hamano | ae7c0c9 | 2005-05-04 01:33:33 -0700 | [diff] [blame] | 5 | dryrun= |
Junio C Hamano | 51890a6 | 2005-08-19 21:38:36 -0700 | [diff] [blame] | 6 | echo= |
Junio C Hamano | ae7c0c9 | 2005-05-04 01:33:33 -0700 | [diff] [blame] | 7 | while case "$#" in 0) break ;; esac |
| 8 | do |
| 9 | case "$1" in |
Junio C Hamano | 51890a6 | 2005-08-19 21:38:36 -0700 | [diff] [blame] | 10 | -n) dryrun=-n echo=echo ;; |
Junio C Hamano | ae7c0c9 | 2005-05-04 01:33:33 -0700 | [diff] [blame] | 11 | --) break ;; |
Junio C Hamano | 215a7ad | 2005-09-07 17:26:23 -0700 | [diff] [blame] | 12 | -*) echo >&2 "usage: git-prune [ -n ] [ heads... ]"; exit 1 ;; |
Junio C Hamano | ae7c0c9 | 2005-05-04 01:33:33 -0700 | [diff] [blame] | 13 | *) break ;; |
| 14 | esac |
| 15 | shift; |
| 16 | done |
| 17 | |
Linus Torvalds | 41f222e | 2005-10-28 09:45:53 -0700 | [diff] [blame] | 18 | sync |
Junio C Hamano | 2b86976 | 2005-12-08 23:18:41 -0800 | [diff] [blame] | 19 | case "$#" in |
| 20 | 0) git-fsck-objects --full --cache --unreachable ;; |
| 21 | *) git-fsck-objects --full --cache --unreachable $(git-rev-parse --all) "$@" ;; |
| 22 | esac | |
| 23 | |
Junio C Hamano | ae7c0c9 | 2005-05-04 01:33:33 -0700 | [diff] [blame] | 24 | sed -ne '/unreachable /{ |
| 25 | s/unreachable [^ ][^ ]* // |
| 26 | s|\(..\)|\1/|p |
| 27 | }' | { |
Junio C Hamano | 8ac069a | 2005-05-09 22:57:58 -0700 | [diff] [blame] | 28 | cd "$GIT_OBJECT_DIRECTORY" || exit |
Junio C Hamano | 51890a6 | 2005-08-19 21:38:36 -0700 | [diff] [blame] | 29 | xargs $echo rm -f |
Linus Torvalds | 9106c09 | 2005-10-09 02:30:17 -0700 | [diff] [blame] | 30 | rmdir 2>/dev/null [0-9a-f][0-9a-f] |
Junio C Hamano | ae7c0c9 | 2005-05-04 01:33:33 -0700 | [diff] [blame] | 31 | } |
Junio C Hamano | 8ac069a | 2005-05-09 22:57:58 -0700 | [diff] [blame] | 32 | |
Junio C Hamano | 51890a6 | 2005-08-19 21:38:36 -0700 | [diff] [blame] | 33 | git-prune-packed $dryrun |
Junio C Hamano | d7b1a1d | 2005-11-11 10:41:53 -0800 | [diff] [blame] | 34 | |
| 35 | redundant=$(git-pack-redundant --all) |
| 36 | if test "" != "$redundant" |
| 37 | then |
Junio C Hamano | c3e24a7 | 2005-11-18 11:15:40 -0800 | [diff] [blame] | 38 | if test "" = "$dryrun" |
Junio C Hamano | d7b1a1d | 2005-11-11 10:41:53 -0800 | [diff] [blame] | 39 | then |
| 40 | echo "$redundant" | xargs rm -f |
| 41 | else |
| 42 | echo rm -f "$redundant" |
| 43 | fi |
| 44 | fi |