Re: Poor performance of git describe in big repos
- From
Jeff King <peff@peff.net>
- Date
- May 31, 2013, 16:17 UTC
- Message-ID
- <20130531161710.GB1365@sigill.intra.peff.net>
- In-Reply-To
- <87txlj30n4.fsf@linux-k42r.v.cablecom.net>
On Fri, May 31, 2013 at 12:27:11PM +0200, Thomas Rast wrote:
Show 12 quoted lines
> Thomas Rast <trast@inf.ethz.ch> writes: > > > However, if that turns out to be the culprit, it's not fixable > > currently[1]. Having commits with insanely long messages is just, well, > > insane. > > > > [1] unless we do a major rework of the loading infrastructure, so that > > we can teach it to load only the beginning of a commit as long as we are > > only interested in parents and such > > Actually, Peff, doesn't your commit parent/tree pointer caching give us > this for free?
It does. You can test it from the "jk/metapacks" branch at git://github.com/peff/git. After building, you'd need to do:
$ git gc $ git metapack --all --commits
in the target repository. You can check that it's working because "git rev-list --all --count" should be an order of magnitude faster. You may need to add "save_commit_buffer = 0" in any commands you are checking, though, as the optimization can only kick in if parse_commit does not want to save the buffer as a side effect.
I also looked into trying to just read the beginning part of a commit[1], but it turned out not to be all that much of an improvement.
-Peff
[1] http://article.gmane.org/gmane.comp.version-control.git/212301