rev-list: move --filter parsing into revision.c
commitc4ea513f4aea64e1ab03309dddff046852bddb74
authorDerrick Stolee <derrickstolee@github.com>
Wed, 9 Mar 2022 16:01:40 +0000 (9 16:01 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 9 Mar 2022 18:25:27 +0000 (9 10:25 -0800)
treeb95aa560c455461afa0521a8fb8452413ad143e2
parent105c6f14ad34b417c1e78bc9a8704dcda7b059f2
rev-list: move --filter parsing into revision.c

Now that 'struct rev_info' has a 'filter' member and most consumers of
object filtering are using that member instead of an external struct,
move the parsing of the '--filter' option out of builtin/rev-list.c and
into revision.c.

This use within handle_revision_pseudo_opt() allows us to find the
option within setup_revisions() if the arguments are passed directly. In
the case of a command such as 'git blame', the arguments are first
scanned and checked with parse_revision_opt(), which complains about the
option, so 'git blame --filter=blob:none <file>' does not become valid
with this change.

Some commands, such as 'git diff' gain this option without having it
make an effect. And 'git diff --objects' was already possible, but does
not actually make sense in that builtin.

The key addition that is coming is 'git bundle create --filter=<X>' so
we can create bundles containing promisor packs. More work is required
to make them fully functional, but that will follow.

Signed-off-by: Derrick Stolee <derrickstolee@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/rev-list.c
revision.c