parse-options: introduce die_for_incompatible_opt2()

The functions die_for_incompatible_opt3() and die_for_incompatible_opt4() already exist to die whenever a user specifies three or four options respectively that are not compatible. Introduce die_for_incompatible_opt2() which dies when two options that are incompatible are set. Signed-off-by: Toon Claes <toon@iotcl.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Toon Claes committed Feb 6, 2025 at 07:33 UTC 9144b9362b2ed972f5886dcc7beee6a2acce2708
2 files changed +13 -3
builtin/replay.c
+4 -3
@@ -163,9 +163,10 @@ static void determine_replay_mode(struct rev_cmdline_info *cmd_info,
163 get_ref_information(cmd_info, &rinfo);
164 if (!rinfo.positive_refexprs)
165 die(_("need some commits to replay"));
166 - if (onto_name && *advance_name)
167 - die(_("--onto and --advance are incompatible"));
168 - else if (onto_name) {
166 +
167 + die_for_incompatible_opt2(!!onto_name, "--onto",
168 + !!*advance_name, "--advance");
169 + if (onto_name) {
170 *onto = peel_committish(onto_name);
171 if (rinfo.positive_refexprs <
172 strset_get_size(&rinfo.positive_refs))
parse-options.h
+9
@@ -436,6 +436,15 @@ static inline void die_for_incompatible_opt3(int opt1, const char *opt1_name,
436 0, "");
437 }
438
439 +static inline void die_for_incompatible_opt2(int opt1, const char *opt1_name,
440 + int opt2, const char *opt2_name)
441 +{
442 + die_for_incompatible_opt4(opt1, opt1_name,
443 + opt2, opt2_name,
444 + 0, "",
445 + 0, "");
446 +}
447 +
448 /*
449 * Use these assertions for callbacks that expect to be called with NONEG and
450 * NOARG respectively, and do not otherwise handle the "unset" and "arg"