From: David Michael Barr Date: Mon, 26 Nov 2012 12:35:48 GMT Subject: Re: [RFC] pack-objects: compression level for non-blobs Message-ID: <575D346F7B9B41D4848315209DF07302@rr-dav.id.au> In-Reply-To: <1353911154-23495-1-git-send-email-b@rr-dav.id.au> > Add config pack.graphcompression similar to pack.compression. > Applies to non-blob objects and if unspecified falls back to pack.compression. > > We may identify objects compressed with level 0 by their leading bytes. > Use this to force recompression when the source and target levels mismatch. > Limit its application to when the config pack.graphcompression is set. > > Signed-off-by: David Michael Barr > --- > builtin/pack-objects.c | 49 +++++++++++++++++++++++++++++++++++++++++++++---- > 1 file changed, 45 insertions(+), 4 deletions(-) > > I started working on this just before taking a vacation, > so it's been a little while coming. > > The intent is to allow selective recompression of pack data. > For small objects/deltas the overhead of deflate is significant. > This may improve read performance for the object graph. > > I ran some unscientific experiments with the chromium repository. > With pack.graphcompression = 0, there was a 2.7% increase in pack size. > I saw a 35% improvement with cold caches and 43% otherwise on git log --raw. I neglected to mention that this is a WIP. I get failures with certain repositories: fatal: delta size changed -- David Michael Barr