Subject: Re: How to unpack recent objects?

From: Jonathan Nieder <[email-masked]>
Date: Thu, 16 Dec 2010 14:40:59 -0600

Hi Phillip,

Phillip Susi wrote:

> It looks like you can use git-unpack-objects to unpack ALL objects, but
> how can you unpack only recent ones that you are likely to use while
> leaving the ancient stuff packed?  Ideally I want to unpack all file
> objects from the current commit, and a reasonable number of commit
> objects going back into the history so accessing them with checkout,
> diff, log, etc will be fast.

Have you tried the experiment?  You can pack all objects and then make
a few commits that do not reuse any blobs from before on top of that;
then "cp -a" the repository and use "git gc --aggressive" to get one
big pack as a control.  Then it should be possible to time checkout,
diff, log, etc[1].

It would also be interesting to know what the nature of these objects
are, in case it is possible to speed things up some other way.

Jonathan

[1] My uninformed guess is that the packed version will be faster,
because of cache effects among other reasons.  The point of loose
objects is to speed up writing objects rather than reading them.
But I'd be happy to be surprised.