blob: 7e7f0ad56d381dc546f1bc598e41c1d7fa1e3a36 [file] [log] [blame]
Linus Torvalds839a7a02005-04-18 12:15:10 -07001#!/bin/sh
Linus Torvaldsb33e9662005-07-08 10:57:21 -07002
Junio C Hamanoae2b0f12005-11-24 00:12:11 -08003. git-sh-setup
Linus Torvaldsb33e9662005-07-08 10:57:21 -07004
Junio C Hamanoae7c0c92005-05-04 01:33:33 -07005dryrun=
Junio C Hamano51890a62005-08-19 21:38:36 -07006echo=
Junio C Hamanoae7c0c92005-05-04 01:33:33 -07007while case "$#" in 0) break ;; esac
8do
9 case "$1" in
Junio C Hamano51890a62005-08-19 21:38:36 -070010 -n) dryrun=-n echo=echo ;;
Junio C Hamanoae7c0c92005-05-04 01:33:33 -070011 --) break ;;
Junio C Hamano215a7ad2005-09-07 17:26:23 -070012 -*) echo >&2 "usage: git-prune [ -n ] [ heads... ]"; exit 1 ;;
Junio C Hamanoae7c0c92005-05-04 01:33:33 -070013 *) break ;;
14 esac
15 shift;
16done
17
Linus Torvalds41f222e2005-10-28 09:45:53 -070018sync
Junio C Hamano2b869762005-12-08 23:18:41 -080019case "$#" in
200) git-fsck-objects --full --cache --unreachable ;;
21*) git-fsck-objects --full --cache --unreachable $(git-rev-parse --all) "$@" ;;
22esac |
23
Junio C Hamanoae7c0c92005-05-04 01:33:33 -070024sed -ne '/unreachable /{
25 s/unreachable [^ ][^ ]* //
26 s|\(..\)|\1/|p
27}' | {
Junio C Hamano8ac069a2005-05-09 22:57:58 -070028 cd "$GIT_OBJECT_DIRECTORY" || exit
Junio C Hamano51890a62005-08-19 21:38:36 -070029 xargs $echo rm -f
Linus Torvalds9106c092005-10-09 02:30:17 -070030 rmdir 2>/dev/null [0-9a-f][0-9a-f]
Junio C Hamanoae7c0c92005-05-04 01:33:33 -070031}
Junio C Hamano8ac069a2005-05-09 22:57:58 -070032
Junio C Hamano51890a62005-08-19 21:38:36 -070033git-prune-packed $dryrun
Junio C Hamanod7b1a1d2005-11-11 10:41:53 -080034
35redundant=$(git-pack-redundant --all)
36if test "" != "$redundant"
37then
Junio C Hamanoc3e24a72005-11-18 11:15:40 -080038 if test "" = "$dryrun"
Junio C Hamanod7b1a1d2005-11-11 10:41:53 -080039 then
40 echo "$redundant" | xargs rm -f
41 else
42 echo rm -f "$redundant"
43 fi
44fi