I had to rebase this onto the latest master rev. master now has the patch which disables the sparse:path filter, and v3 of this patch set has conflicts with it. This version does not so it can be patched in and tried out by others. I have re-run the test suite on each commit. Sorry for the spamminess. Thanks, Matthew DeVore (10): list-objects-filter: make API easier to use list-objects-filter: put omits set in filter struct list-objects-filter-options: always supply *errbuf list-objects-filter: implement composite filters list-objects-filter-options: move error check up list-objects-filter-options: make filter_spec a string_list strbuf: give URL-encoding API a char predicate fn list-objects-filter-options: allow mult. --filter list-objects-filter-options: clean up use of ALLOC_GROW list-objects-filter-options: make parser void Documentation/rev-list-options.txt | 16 ++ builtin/clone.c | 8 +- builtin/fetch.c | 9 +- builtin/rev-list.c | 6 +- cache.h | 22 ++ credential-store.c | 9 +- fetch-pack.c | 20 +- http.c | 6 +- list-objects-filter-options.c | 267 ++++++++++++++++++---- list-objects-filter-options.h | 57 ++++- list-objects-filter.c | 332 +++++++++++++++++++++------- list-objects-filter.h | 35 ++- list-objects.c | 55 ++--- strbuf.c | 15 +- strbuf.h | 7 +- t/t5616-partial-clone.sh | 19 ++ t/t6112-rev-list-filters-objects.sh | 194 +++++++++++++++- transport-helper.c | 10 +- transport.c | 1 + upload-pack.c | 13 +- url.c | 6 + url.h | 8 + 22 files changed, 874 insertions(+), 241 deletions(-) -- 2.21.0