Re: Poor performance of git describe in big repos
- From
- Alex Bennée <kernel-hacker@bennee.com>
- Date
- Jun 3, 2013, 08:02 UTC
- Message-ID
- <CAJ-05NNgcj_pPer2Tw4HvKkVib7N1ZFo7rZOrR9z8NMV1WHQsQ@mail.gmail.com>
- In-Reply-To
- <CAJ-05NN8cARpPTnsCfHt3kY6gTnhZ=Vq55EzqxWBV_3ju-oczQ@mail.gmail.com>
On 31 May 2013 10:57, Alex Bennée <kernel-hacker@bennee.com> wrote:
Show 19 quoted lines
> On 31 May 2013 09:46, Thomas Rast <trast@inf.ethz.ch> wrote: >> >> So that deleted all unannotated tags pointing at commits, and then it >> was fast. Curious. >> >> 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 > > I'll do a bit of scripting to dig into the nature of these > uber-commits and try and work out how they cam about. I suspect they > are simply start of branch states in our broken and disparate history. > > I'll get back to you once I've dug a little deeper.
So I wrote a little script [1] which I ran to remove all tags that did not exist on any branches:
git-tag-cleaner.py -d no-branch
After a lot of churning:
17:26 ajb@sloy/x86_64 [work.git] >time /usr/bin/git --no-pager describe --long --tags ajb-build-test-5225-2-gdc0b771
real 0m0.799s user 0m0.024s sys 0m0.052s
So at least I can fix up my repo. All the big ones look at least as though they were weird cvs2svn creations that exist to represent the detached state of a strange CVS tag from the converted repository. However it does raise one question.
Why is git attempting to parse a commit not on the DAG for the branch I'm attempting to describe?
Anyway as I have a work around I'm going to do a slightly more conservative clean of the repo with my script and move on.
[1] https://github.com/stsquad/git-tag-cleaner
-- Alex, homepage: http://www.bennee.com/~alex/