This patch series does two things: a. (patches 1-2) introduces "--filter=only:commits" which filters trees and blobs b. (patches 3-5) better support for promisor trees in the rev-list command The intention is to enable initial partial clones to be very tiny by only including commits. Patches 3-5 are necessary because, even though it has already been possible to have partial clones with trees missing (there are tests for it), there have not been any filters which support this yet, so it seemed necessary to make rev-list handle this case better. Thank you, Matthew DeVore (5): revision: invert meaning of the USER_GIVEN flag list-objects-filter: implement filter only:commits list-objects: store common func args in struct list-objects: refactor to process_tree_contents rev-list: handle missing tree objects properly Documentation/rev-list-options.txt | 2 + builtin/rev-list.c | 12 +- list-objects-filter-options.c | 4 + list-objects-filter-options.h | 1 + list-objects-filter.c | 43 +++-- list-objects.c | 226 +++++++++++++------------ revision.c | 1 - revision.h | 11 +- t/t5317-pack-objects-filter-objects.sh | 30 ++++ t/t5616-partial-clone.sh | 27 +++ t/t6112-rev-list-filters-objects.sh | 13 ++ 11 files changed, 242 insertions(+), 128 deletions(-) -- 2.18.0.597.ga71716f1ad-goog