aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>2021-08-23 14:30:20 +0200
committerJunio C Hamano <gitster@pobox.com>2021-08-30 17:06:18 -0700
commit6d209a01f89fd27d42e0a74a5ada29cef1dcac29 (patch)
tree65607f1d7506502d19a4d3d6e9e6ff3d319cd76d
parentcommit-graph: early exit to "usage" on !argc (diff)
downloadgit-6d209a01f89fd27d42e0a74a5ada29cef1dcac29.tar.gz
git-6d209a01f89fd27d42e0a74a5ada29cef1dcac29.zip
commit-graph: show usage on "commit-graph [write|verify] garbage"
Change the parse_options() invocation in the commit-graph code to error on unknown leftover argv elements, in addition to the existing and implicit erroring via parse_options() on unknown options. We'd already error in cmd_commit_graph() on e.g.: git commit-graph unknown verify git commit-graph --unknown verify But here we're calling parse_options() twice more for the "write" and "verify" subcommands. We did not do the same checking for leftover argv elements there. As a result we'd silently accept garbage in these subcommands, let's not do that. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Reviewed-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin/commit-graph.c4
-rwxr-xr-xt/t5318-commit-graph.sh5
2 files changed, 9 insertions, 0 deletions
diff --git a/builtin/commit-graph.c b/builtin/commit-graph.c
index bf34aa43f2..0457903f18 100644
--- a/builtin/commit-graph.c
+++ b/builtin/commit-graph.c
@@ -105,6 +105,8 @@ static int graph_verify(int argc, const char **argv)
argc = parse_options(argc, argv, NULL,
options,
builtin_commit_graph_verify_usage, 0);
+ if (argc)
+ usage_with_options(builtin_commit_graph_verify_usage, options);
if (!opts.obj_dir)
opts.obj_dir = get_object_directory();
@@ -262,6 +264,8 @@ static int graph_write(int argc, const char **argv)
argc = parse_options(argc, argv, NULL,
options,
builtin_commit_graph_write_usage, 0);
+ if (argc)
+ usage_with_options(builtin_commit_graph_write_usage, options);
if (opts.reachable + opts.stdin_packs + opts.stdin_commits > 1)
die(_("use at most one of --reachable, --stdin-commits, or --stdin-packs"));
diff --git a/t/t5318-commit-graph.sh b/t/t5318-commit-graph.sh
index af88f805aa..09a2ccd292 100755
--- a/t/t5318-commit-graph.sh
+++ b/t/t5318-commit-graph.sh
@@ -5,6 +5,11 @@ test_description='commit graph'
GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS=0
+test_expect_success 'usage' '
+ test_expect_code 129 git commit-graph write blah &&
+ test_expect_code 129 git commit-graph write verify
+'
+
test_expect_success 'setup full repo' '
mkdir full &&
cd "$TRASH_DIRECTORY/full" &&