On Fri, Sep 30, 2016 at 10:54 AM, Linus Torvalds wrote: > >> 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.. Side note: maybe we can mix the two approaches, and keep the counting in the disambiguation state, and just make the counting function do init_object_disambiguation(); find_short_object_filename(&ds); find_short_packed_object(&ds); finish_object_disambiguation(&ds, sha1); and then just use "ds.nrobjects". So the counting would still be done by the disambiguation code, it just woudln't be in get_short_sha1(). So here's another version that takes that approach. And if somebody (hint hint) wants to do the counting differently, they can perhaps send an incremental patch to do that. (This patch also contains the few setup issues Junio found with the new "default_abbrev is negative" model) Linus