]> git.ipfire.org Git - thirdparty/git.git/commit - list-objects-filter.c
list-objects-filter: implement filter tree:0
authorMatthew DeVore <matvore@google.com>
Fri, 5 Oct 2018 21:31:27 +0000 (14:31 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sat, 6 Oct 2018 23:55:00 +0000 (08:55 +0900)
commitbc5975d24f33c974d53b3d94c5697fadaec5b000
treebb60b346cb8f5a20ee28d0bc2c9478939b72ac26
parentcc0b05a4cc54c30a5355a9da5d76b1879d960628
list-objects-filter: implement filter tree:0

Teach list-objects the "tree:0" filter which allows for filtering
out all tree and blob objects (unless other objects are explicitly
specified by the user). The purpose of this patch is to allow smaller
partial clones.

The name of this filter - tree:0 - does not explicitly specify that
it also filters out all blobs, but this should not cause much confusion
because blobs are not at all useful without the trees that refer to
them.

I also considered only:commits as a name, but this is inaccurate because
it suggests that annotated tags are omitted, but actually they are
included.

The name "tree:0" allows later filtering based on depth, i.e. "tree:1"
would filter out all but the root tree and blobs. In order to avoid
confusion between 0 and capital O, the documentation was worded in a
somewhat round-about way that also hints at this future improvement to
the feature.

Signed-off-by: Matthew DeVore <matvore@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/rev-list-options.txt
list-objects-filter-options.c
list-objects-filter-options.h
list-objects-filter.c
t/t5317-pack-objects-filter-objects.sh
t/t5616-partial-clone.sh
t/t6112-rev-list-filters-objects.sh