From 06e5c1203013320a4bae7edf86378718b23a517c Mon Sep 17 00:00:00 2001 From: Nicolas Boisselier Date: Fri, 12 Jan 2018 04:56:54 +0000 Subject: [PATCH] etc/profile.d/git.sh --- etc/profile.d/git.sh | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/etc/profile.d/git.sh b/etc/profile.d/git.sh index 28d1be57..8e6bd782 100644 --- a/etc/profile.d/git.sh +++ b/etc/profile.d/git.sh @@ -205,3 +205,32 @@ git_name() { git_branch() { git branch | awk '/^\*/{print $2}' } + +git_size_pack() { +# From: http://stevelorek.com/how-to-shrink-a-git-repository.html +( +IFS=$'\n'; + +# list all objects including their size, sort by size, take top 10 +objects=`git verify-pack -v .git/objects/pack/pack-*.idx | grep -v chain | sort -k3nr | head` + +echo "All sizes are in kB. The pack column is the size of the object, compressed, inside the pack file." + +output="size,pack,SHA,location" +for y in $objects +do + # extract the size in bytes + size=$((`echo $y | cut -f 5 -d ' '`/1024)) + # extract the compressed size in bytes + compressedSize=$((`echo $y | cut -f 6 -d ' '`/1024)) + # extract the SHA + sha=`echo $y | cut -f 1 -d ' '` + # find the objects location in the repository tree + other=`git rev-list --all --objects | grep $sha` + #lineBreak=`echo -e "\n"` + output="${output}\n${size},${compressedSize},${other}" +done + +echo -e $output | column -t -s ', ' +) +} -- 2.47.3