list-objects-filter: teach tree:# how to handle >0
authorMatthew DeVore <matvore@google.com>
Wed, 9 Jan 2019 02:59:13 +0000 (18:59 -0800)
committerJunio C Hamano <gitster@pobox.com>
Tue, 15 Jan 2019 23:39:34 +0000 (15:39 -0800)
commitc813a7c35f44f4bf435c6ecb21bf4b9ec8f227de
treeeffc06673ec10419f1e7472af384465bd0abfa86
parent0aa9d8aa6ce429f0fa04e1ca819ed766c211e242
list-objects-filter: teach tree:# how to handle >0

Implement positive values for <depth> in the tree:<depth> filter. The
exact semantics are described in Documentation/rev-list-options.txt.

The long-term goal at the end of this is to allow a partial clone to
eagerly fetch an entire directory of files by fetching a tree and
specifying <depth>=1. This, for instance, would make a build operation
fast and convenient. It is fast because the partial clone does not need
to fetch each file individually, and convenient because the user does
not need to supply a sparse-checkout specification.

Another way of considering this feature is as a way to reduce
round-trips, since the client can get any number of levels of
directories in a single request, rather than wait for each level of tree
objects to come back, whose entries are used to construct a new request.

Signed-off-by: Matthew DeVore <matvore@google.com>
Reviewed-by: Jonathan Tan <jonathantanmy@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/t6112-rev-list-filters-objects.sh