git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [script] find largest pack objects

From
Nicolas Pitre <nico@cam.org>
Date
Jul 10, 2009, 03:34 UTC
Message-ID
<alpine.LFD.2.00.0907092332030.21547@xanadu.home>
In-Reply-To
<A67AA762-487D-4CFB-B555-718C88C5787D@gmail.com>
On Fri, 10 Jul 2009, Antony Stubbs wrote:
Show 47 quoted lines
> Blog post about git pruning history and finding large objects in your repo:
> http://stubbisms.wordpress.com/2009/07/10/git-script-to-show-largest-pack-objects-and-trim-your-waist-line/
> 
> This is a script I put together after migrating the Spring Modules project
> from CVS, using git-cvsimport (which I also had to patch, to get to work on OS
> X / MacPorts). I wrote it because I wanted to get rid of all the large jar
> files, and documentation etc, that had been put into source control. However,
> if _large files_ are deleted in the latest revision, then they can be hard to
> track down.
> 
> #!/bin/bash
> #set -x
> 
> # Shows you the largest objects in your repo's pack file.
> # Written for osx.
> #
> # @see
> http://stubbisms.wordpress.com/2009/07/10/git-script-to-show-largest-pack-objects-and-trim-your-waist-line/
> # @author Antony Stubbs
> 
> # set the internal field spereator to line break, so that we can iterate
> easily over the verify-pack output
> 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's. 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 ', '

This is certainly useful. Mind submitting a patch adding this script to contrib/stats/ ?

Nicolas
Previous: Antony StubbsNext: Antony Stubbs
Message 2 of 4 in “[script] find largest pack objects”
  1. Antony StubbsJul 10, 2009
  2. Nicolas PitreJul 10, 2009
  3. Antony StubbsAug 31, 2009
  4. Björn SteinbrinkJul 10, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.