Re: [BUG] allowtipsha1inwant serves unreachable blobs if you know its hash
From: Junio C Hamano <hidden>
Date: 2017-02-24 00:31:00
Junio C Hamano [off-list ref] writes:
Jonathan Tan [off-list ref] writes:quoted
Adding "--objects" works, and all existing tests pass, except for the potential performance issue and the side effect that even fetching a reachable blob no longer works. This is due to a possible bug where a call like "git rev-list --objects $tree ^master" (where $tree is the tree object corresponding to master) prints out objects ...The "reachable from this, excluding what is reachable from that" notation was originally designed to work only on commits, and I wouldn't be surprised if "$tree ^master" did not work as you expect in the current implementation. I agree that ideally it shouldn't show anything, but I suspect that it would make it very expensive if done naively---we'd end up having to call mark_tree_uninteresting() for all uninteresting commits, not just for the commits at the edge of the DAG as we do right now.
BTW, by "it would be expensive" I didn't mean "hence it shouldn't be done." Even though I do not know by how much expensive it would become, I think this approach is a lot better way going forward than punting and say "no, you cannot specify anything lower than commit." Thanks for looking into this.