Jonathan Tan <jonathanta...@google.com> writes: > 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.