3 # This script tries to find out what made your repository so large.
4 # It sorts the loose and packed objects by size (for packed objects, we look
5 # at the size in the pack) and shows the largest ten.
13 LINES
="$(git log --root --raw --abbrev=40 --all --format="commit
%H
" |
14 grep -e '^commit' -e "^
:[^
]* [^
]* [^
]* $1" |
15 grep -m1 -B1 "^
:[^
]* [^
]* [^
]* $1")"
18 COMMIT
="$(git name-rev $(echo "$LINES" |
19 sed -n 's/commit //p') |
21 PATH
="$(echo "$LINES" | sed -n 's/^.* //p')"
22 printf "'%s:%s'" $COMMIT "$PATH"
29 GIT_DIR
="$(git rev-parse --git-dir)" || die
"No repository found"
30 OBJECT_LIST
="$( (cd "$GIT_DIR" &&
32 sed 's/^\([^ ]* *\)\{4\}\([^ ]*\).* objects\/\(..\)\/\(.\{38\}\)$/\2 \3\4/' &&
33 for pack in "$
(ls objects
/pack
/*.pack
2> /dev
/null
)"
35 git verify-pack -v "$pack" 2>&1 |
36 sed -n 's/^\([^ ]\{40\}\) *[^ ]* *[^ ]* *\([1-9][0-9]*\).*$/\2 \1/p'
45 echo $size $sha1 "$(identify_object $sha1)"