]> git.ipfire.org Git - thirdparty/git.git/commitdiff
maintenance: add --quiet option
authorDerrick Stolee <dstolee@microsoft.com>
Thu, 17 Sep 2020 18:11:43 +0000 (18:11 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 17 Sep 2020 18:30:05 +0000 (11:30 -0700)
Maintenance activities are commonly used as steps in larger scripts.
Providing a '--quiet' option allows those scripts to be less noisy when
run on a terminal window. Turn this mode on by default when stderr is
not a terminal.

Pipe the option to the 'git gc' child process.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-maintenance.txt
builtin/gc.c
t/t7900-maintenance.sh

index ff47fb3641f807c4007b602941923f9cf535a480..04fa0fe3298e7793bf0f865c5dccbb500d09bf20 100644 (file)
@@ -52,6 +52,9 @@ OPTIONS
        in the `gc.auto` config setting, or when the number of pack-files
        exceeds the `gc.autoPackLimit` config setting.
 
+--quiet::
+       Do not report progress or other information over `stderr`.
+
 GIT
 ---
 Part of the linkgit:git[1] suite
index ec064e86867b35dc51e237c0f144d60ed2d8f5cc..bacce0c7476e0f49886d94f813fdd415396f3645 100644 (file)
@@ -701,12 +701,13 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
 }
 
 static const char * const builtin_maintenance_run_usage[] = {
-       N_("git maintenance run [--auto]"),
+       N_("git maintenance run [--auto] [--[no-]quiet]"),
        NULL
 };
 
 struct maintenance_run_opts {
        int auto_flag;
+       int quiet;
 };
 
 static int maintenance_task_gc(struct maintenance_run_opts *opts)
@@ -718,6 +719,10 @@ static int maintenance_task_gc(struct maintenance_run_opts *opts)
 
        if (opts->auto_flag)
                strvec_push(&child.args, "--auto");
+       if (opts->quiet)
+               strvec_push(&child.args, "--quiet");
+       else
+               strvec_push(&child.args, "--no-quiet");
 
        close_object_store(the_repository->objects);
        return run_command(&child);
@@ -729,10 +734,14 @@ static int maintenance_run(int argc, const char **argv, const char *prefix)
        struct option builtin_maintenance_run_options[] = {
                OPT_BOOL(0, "auto", &opts.auto_flag,
                         N_("run tasks based on the state of the repository")),
+               OPT_BOOL(0, "quiet", &opts.quiet,
+                        N_("do not report progress or other information over stderr")),
                OPT_END()
        };
        memset(&opts, 0, sizeof(opts));
 
+       opts.quiet = !isatty(2);
+
        argc = parse_options(argc, argv, prefix,
                             builtin_maintenance_run_options,
                             builtin_maintenance_run_usage,
index c2f0b1d0c0d9c4f03ca216063df6c126d31c180b..5637053bf658209d598ac5b31ea7028f620cc44d 100755 (executable)
@@ -13,11 +13,16 @@ test_expect_success 'help text' '
        test_i18ngrep "usage: git maintenance" err
 '
 
-test_expect_success 'run [--auto]' '
-       GIT_TRACE2_EVENT="$(pwd)/run-no-auto.txt" git maintenance run &&
-       GIT_TRACE2_EVENT="$(pwd)/run-auto.txt" git maintenance run --auto &&
-       test_subcommand git gc <run-no-auto.txt &&
-       test_subcommand git gc --auto <run-auto.txt
+test_expect_success 'run [--auto|--quiet]' '
+       GIT_TRACE2_EVENT="$(pwd)/run-no-auto.txt" \
+               git maintenance run 2>/dev/null &&
+       GIT_TRACE2_EVENT="$(pwd)/run-auto.txt" \
+               git maintenance run --auto 2>/dev/null &&
+       GIT_TRACE2_EVENT="$(pwd)/run-no-quiet.txt" \
+               git maintenance run --no-quiet 2>/dev/null &&
+       test_subcommand git gc --quiet <run-no-auto.txt &&
+       test_subcommand git gc --auto --quiet <run-auto.txt &&
+       test_subcommand git gc --no-quiet <run-no-quiet.txt
 '
 
 test_done