On Fri, Sep 30, 2016 at 1:06 AM, Jeff King <peff@xxxxxxxx> wrote: > > I agree that this deals with the performance concerns by caching the > default_abbrev_len and starting there. I still think it's unnecessarily > invasive to touch get_short_sha1() at all, which is otherwise only a > reading function. So the reason that d oesn't work is that the "disambiguate_state" data where we keep the number of objects is only visible within get_short_sha1(). So outside that function, you don't have any sane way to figure out how many objects. So then you have to do the extra counting function.. > So IMHO, the best combination is the init_default_abbrev() you posted in > [1], but initialized at the top of find_unique_abbrev(). And cached > there, obviously, in a similar way. That's certainly possible, but I'm really not happy with how the counting function looks. And nobody actually stood up to say "yeah, that gets alternate loose objects right" or "if you have tons of those alternate loose objects you have other issues anyway". I think somebody would have to "own" that counting function, the advantage of just putting it into disambiguate_state is that we just get the counting for free.. Linus