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

Re: [script] find largest pack objects

From
Antony Stubbs <antony.stubbs@gmail.com>
Date
Aug 31, 2009, 13:25 UTC
Message-ID
<C0EFE78F-97D6-4287-832A-568AA07031A7@gmail.com>
In-Reply-To
<alpine.LFD.2.00.0907092332030.21547@xanadu.home>

Sorry Nicolas, Completely missed your message amongst the torrent of the git mailing list - which I'm now unsubscribed from.. But sure, I'll ad this to my todo list :)

Cheers, Antony Stubbs,

sharca.com
On 10/07/2009, at 5:34 AM, Nicolas Pitre wrote:
Show 65 quoted lines
> On Fri, 10 Jul 2009, Antony Stubbs wrote:
>
>> 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: Nicolas PitreNext: Björn Steinbrink
Message 3 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.