pack-objects: use standard option incompatibility functions
pack-objects has a handful of explicit checks for pairs of command-line
options which are mutually incompatible. Many of these pre-date
a699367bb8 (i18n: factorize more 'incompatible options' messages,
2022-01-31).
Convert the explicit checks into die_for_incompatible_opt2() calls,
which simplifies the implementation and standardizes pack-objects'
output when given incompatible options (e.g., --stdin-packs with
--filter gives different output than --keep-unreachable with
--unpack-unreachable).
There is one minor piece of test fallout in t5331 that expects the old
format, which has been corrected.
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
parent
f9aa0eedb3
commit
798ddd947f
|
|
@ -5010,9 +5010,10 @@ int cmd_pack_objects(int argc,
|
|||
strvec_push(&rp, "--unpacked");
|
||||
}
|
||||
|
||||
if (exclude_promisor_objects && exclude_promisor_objects_best_effort)
|
||||
die(_("options '%s' and '%s' cannot be used together"),
|
||||
"--exclude-promisor-objects", "--exclude-promisor-objects-best-effort");
|
||||
die_for_incompatible_opt2(exclude_promisor_objects,
|
||||
"--exclude-promisor-objects",
|
||||
exclude_promisor_objects_best_effort,
|
||||
"--exclude-promisor-objects-best-effort");
|
||||
if (exclude_promisor_objects) {
|
||||
use_internal_rev_list = 1;
|
||||
fetch_if_missing = 0;
|
||||
|
|
@ -5050,13 +5051,14 @@ int cmd_pack_objects(int argc,
|
|||
if (!pack_to_stdout && thin)
|
||||
die(_("--thin cannot be used to build an indexable pack"));
|
||||
|
||||
if (keep_unreachable && unpack_unreachable)
|
||||
die(_("options '%s' and '%s' cannot be used together"), "--keep-unreachable", "--unpack-unreachable");
|
||||
die_for_incompatible_opt2(keep_unreachable, "--keep-unreachable",
|
||||
unpack_unreachable, "--unpack-unreachable");
|
||||
if (!rev_list_all || !rev_list_reflog || !rev_list_index)
|
||||
unpack_unreachable_expiration = 0;
|
||||
|
||||
if (stdin_packs && filter_options.choice)
|
||||
die(_("cannot use --filter with --stdin-packs"));
|
||||
die_for_incompatible_opt2(stdin_packs, "--stdin-packs",
|
||||
filter_options.choice, "--filter");
|
||||
|
||||
|
||||
if (stdin_packs && use_internal_rev_list)
|
||||
die(_("cannot use internal rev list with --stdin-packs"));
|
||||
|
|
@ -5064,8 +5066,8 @@ int cmd_pack_objects(int argc,
|
|||
if (cruft) {
|
||||
if (use_internal_rev_list)
|
||||
die(_("cannot use internal rev list with --cruft"));
|
||||
if (stdin_packs)
|
||||
die(_("cannot use --stdin-packs with --cruft"));
|
||||
die_for_incompatible_opt2(stdin_packs, "--stdin-packs",
|
||||
cruft, "--cruft");
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ test_expect_success '--stdin-packs is incompatible with --filter' '
|
|||
cd stdin-packs &&
|
||||
test_must_fail git pack-objects --stdin-packs --stdout \
|
||||
--filter=blob:none </dev/null 2>err &&
|
||||
test_grep "cannot use --filter with --stdin-packs" err
|
||||
test_grep "options .--stdin-packs. and .--filter. cannot be used together" err
|
||||
)
|
||||
'
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue