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