]> git.ipfire.org Git - thirdparty/git.git/commitdiff
fsck: suppress commit-graph output with `--no-progress`
authorTaylor Blau <me@ttaylorr.com>
Sat, 8 Jul 2023 00:31:31 +0000 (20:31 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 10 Jul 2023 17:02:37 +0000 (10:02 -0700)
Since e0fd51e1d7 (fsck: verify commit-graph, 2018-06-27), `fsck` runs
`git commit-graph verify` to check the integrity of any commit-graph(s).

Originally, the `git commit-graph verify` step would always print to
stdout/stderr, regardless of whether or not `fsck` was invoked with
`--[no-]progress` or not. But in 7371612255 (commit-graph: add
--[no-]progress to write and verify, 2019-08-26), the commit-graph
machinery learned the `--[no-]progress` option, though `fsck` was not
updated to pass this new flag (or not).

This led to seeing output from running `git fsck`, even with
`--no-progress` on repositories that have a commit-graph:

    $ git.compile fsck --connectivity-only --no-progress --no-dangling
    Verifying commits in commit graph: 100% (4356/4356), done.
    Verifying commits in commit graph: 100% (131912/131912), done.

Ensure that `fsck` passes `--[no-]progress` as appropriate when calling
`git commit-graph verify`.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Acked-by: Derrick Stolee <derrickstolee@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/fsck.c
t/t5318-commit-graph.sh

index dcc165bf0c508da9b0ebe238a83fc5861def40c7..915dc8b9b3ae23325370ac60f308a71457edd356 100644 (file)
@@ -1072,6 +1072,10 @@ int cmd_fsck(int argc, const char **argv, const char *prefix)
                        commit_graph_verify.git_cmd = 1;
                        strvec_pushl(&commit_graph_verify.args, "commit-graph",
                                     "verify", "--object-dir", odb->path, NULL);
+                       if (show_progress)
+                               strvec_push(&commit_graph_verify.args, "--progress");
+                       else
+                               strvec_push(&commit_graph_verify.args, "--no-progress");
                        if (run_command(&commit_graph_verify))
                                errors_found |= ERROR_COMMIT_GRAPH;
                }
index b6e12115786fda5b3b89ad63f2761192593c7f1b..bf8a92317b3aa9275dc53e72a7fe2d7d0da195f9 100755 (executable)
@@ -684,6 +684,16 @@ test_expect_success 'git fsck (checks commit-graph when config unset)' '
        test_must_fail git fsck
 '
 
+test_expect_success 'git fsck shows commit-graph output with --progress' '
+       git -C "$TRASH_DIRECTORY/full" fsck --progress 2>err &&
+       grep "Verifying commits in commit graph" err
+'
+
+test_expect_success 'git fsck suppresses commit-graph output with --no-progress' '
+       git -C "$TRASH_DIRECTORY/full" fsck --no-progress 2>err &&
+       ! grep "Verifying commits in commit graph" err
+'
+
 test_expect_success 'setup non-the_repository tests' '
        rm -rf repo &&
        git init repo &&