]> git.ipfire.org Git - thirdparty/git.git/commitdiff
rev-list: refactor early option parsing
authorJustin Tobler <jltobler@gmail.com>
Wed, 19 Mar 2025 18:34:07 +0000 (13:34 -0500)
committerJunio C Hamano <gitster@pobox.com>
Fri, 21 Mar 2025 10:40:02 +0000 (03:40 -0700)
Before invoking `setup_revisions()`, the `--missing` and
`--exclude-promisor-objects` options are parsed early. In a subsequent
commit, another option is added that must be parsed early.

Refactor the code to parse both options in a single early pass.

Signed-off-by: Justin Tobler <jltobler@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/rev-list.c

index dcd079c16cc8131a4f0717ec32d8b4cbe1517a21..04d9c893b5dcc5096e5534d234f0feb935c40508 100644 (file)
@@ -16,6 +16,7 @@
 #include "object-file.h"
 #include "object-store-ll.h"
 #include "pack-bitmap.h"
+#include "parse-options.h"
 #include "log-tree.h"
 #include "graph.h"
 #include "bisect.h"
@@ -639,19 +640,15 @@ int cmd_rev_list(int argc,
                if (!strcmp(arg, "--exclude-promisor-objects")) {
                        fetch_if_missing = 0;
                        revs.exclude_promisor_objects = 1;
-                       break;
-               }
-       }
-       for (i = 1; i < argc; i++) {
-               const char *arg = argv[i];
-               if (skip_prefix(arg, "--missing=", &arg)) {
-                       if (revs.exclude_promisor_objects)
-                               die(_("options '%s' and '%s' cannot be used together"), "--exclude-promisor-objects", "--missing");
-                       if (parse_missing_action_value(arg))
-                               break;
+               } else if (skip_prefix(arg, "--missing=", &arg)) {
+                       parse_missing_action_value(arg);
                }
        }
 
+       die_for_incompatible_opt2(revs.exclude_promisor_objects,
+                                 "--exclude_promisor_objects",
+                                 arg_missing_action, "--missing");
+
        if (arg_missing_action)
                revs.do_not_die_on_missing_objects = 1;