It has been a while since a sent a roll-up. Here are the changes since v2: - Re-use more URL-encoding logic in strbuf.c * This was partially achieved by changing the helper function to accept a function that will indicate whether some character must be escaped. - Re-use more URL-decoding logic in url.c - changed the filter_spec strbuf to a string_list to avoid explicit initialization - Remove logic to "expand" tree:#k and tree:#m filter specs since there is no server that supports tree:# but does not support tree:#k, as they were implemented at the same time. 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 | 345 +++++++++++++++++++++------- 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, 879 insertions(+), 249 deletions(-) -- 2.21.0