]> git.nbdom.net Git - nb.git/commitdiff
etc/profile.d/git.sh
authorNicolas Boisselier <nicolas.boisselier@gmail.com>
Fri, 12 Jan 2018 04:56:54 +0000 (04:56 +0000)
committerNicolas Boisselier <nicolas.boisselier@gmail.com>
Fri, 12 Jan 2018 04:56:54 +0000 (04:56 +0000)
etc/profile.d/git.sh

index 28d1be5780bbcfdbef850df893f9b9a1dc8bd06e..8e6bd782cfa6455c44604e33ace0d0e138a263d9 100644 (file)
@@ -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 ', '
+)
+}