rev-list: add list-objects filtering support
authorJeff Hostetler <jeffhost@microsoft.com>
Tue, 21 Nov 2017 20:58:51 +0000 (20:58 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 22 Nov 2017 05:11:57 +0000 (14:11 +0900)
commitcaf3827e2f6a8a0315301d52b5bf46e269b3a388
treee9543e67612eaf1c74e495e2369fed7ae08590e0
parent25ec7bcac044057900a0f3c9a8d6ccbb41a066bc
rev-list: add list-objects filtering support

Teach rev-list to use the filtering provided by the
traverse_commit_list_filtered() interface to omit
unwanted objects from the result.

Object filtering is only allowed when one of the "--objects*"
options are used.

When the "--filter-print-omitted" option is used, the omitted
objects are printed at the end.  These are marked with a "~".
This option can be combined with "--quiet" to get a list of
just the omitted objects.

Add t6112 test.

In the future, we will introduce a "partial clone" mechanism
wherein an object in a repo, obtained from a remote, may
reference a missing object that can be dynamically fetched from
that remote once needed.  This "partial clone" mechanism will
have a way, sometimes slow, of determining if a missing link
is one of the links expected to be produced by this mechanism.

This patch introduces handling of missing objects to help
debugging and development of the "partial clone" mechanism,
and once the mechanism is implemented, for a power user to
perform operations that are missing-object aware without
incurring the cost of checking if a missing link is expected.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Reviewed-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-rev-list.txt
Documentation/rev-list-options.txt
builtin/rev-list.c
t/t6112-rev-list-filters-objects.sh [new file with mode: 0755]