]> git.ipfire.org Git - thirdparty/git.git/commit - revision.h
exclude-promisor-objects: declare when option is allowed
authorMatthew DeVore <matvore@google.com>
Tue, 23 Oct 2018 01:13:42 +0000 (18:13 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 23 Oct 2018 04:52:57 +0000 (13:52 +0900)
commit669b1d2aaec73ba762bf566078308075886ca208
tree221c7ff149683106450a6ba51e2b613c0bffae27
parent368a89124c3ad859631452f7b012d0ad939375f3
exclude-promisor-objects: declare when option is allowed

The --exclude-promisor-objects option causes some funny behavior in at
least two commands: log and blame. It causes a BUG crash:

$ git log --exclude-promisor-objects
BUG: revision.c:2143: exclude_promisor_objects can only be used
when fetch_if_missing is 0
Aborted
[134]

Fix this such that the option is treated like any other unknown option.
The commands that must support it are limited, so declare in those
commands that the flag is supported. In particular:

pack-objects
prune
rev-list

The commands were found by searching for logic which parses
--exclude-promisor-objects outside of revision.c. Extra logic outside of
revision.c is needed because fetch_if_missing must be turned on before
revision.c sees the option or it will BUG-crash. The above list is
supported by the fact that no other command is introspectively invoked
by another command passing --exclude-promisor-object.

Signed-off-by: Matthew DeVore <matvore@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/pack-objects.c
builtin/prune.c
builtin/rev-list.c
revision.c
revision.h
t/t4202-log.sh
t/t8002-blame.sh