Here is a roll-up with hopefully all comments applied or responded to. Notable changes since the last one include: - Added an ALLOC_GROW_BY which is used twice by this patchset to make growing arrays safer and cleaner - Cleaned up the URL-encoding by (1) using hex_to_bytes rather than rolling my own helpers and (2) making error-string-generation non-conditional - Switched to an array-based data structure rather than a linked list for both LOFC_COMBINE filter spec objects and the filter object itself - Changed the list_objects_filter API to be cleaner to use - Changed test cases to use sparse:oid= rather than sparse:path= since the latter is being disabled. Thank you, Matthew DeVore (9): 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 strbuf 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/rev-list.c | 2 +- cache.h | 22 ++ list-objects-filter-options.c | 264 ++++++++++++++++++--- list-objects-filter-options.h | 32 ++- list-objects-filter.c | 345 +++++++++++++++++++++------- list-objects-filter.h | 35 ++- list-objects.c | 55 ++--- t/t5616-partial-clone.sh | 19 ++ t/t6112-rev-list-filters-objects.sh | 197 +++++++++++++++- transport.c | 1 + upload-pack.c | 4 +- 12 files changed, 816 insertions(+), 176 deletions(-) -- 2.17.1