Re: [PATCH 2/2] repack: make '--quiet' disable progress
- From
Jeff King <peff@peff.net>
- Date
- Dec 17, 2021, 18:10 UTC
- Message-ID
- <YbzSfwQixuonrK/o@coredump.intra.peff.net>
- In-Reply-To
- <3eff83d9ae14023f3527dfeb419cf8259f6d053d.1639758526.git.gitgitgadget@gmail.com>
On Fri, Dec 17, 2021 at 04:28:46PM +0000, Derrick Stolee via GitGitGadget wrote:
Show 16 quoted lines
> From: Derrick Stolee <dstolee@microsoft.com> > > While testing some ideas in 'git repack', I ran it with '--quiet' and > discovered that some progress output was still shown. Specifically, the > output for writing the multi-pack-index showed the progress. > > The 'show_progress' variable in cmd_repack() is initialized with > isatty(2) and is not modified at all by the '--quiet' flag. The > '--quiet' flag modifies the po_args.quiet option which is translated > into a '--quiet' flag for the 'git pack-objects' child process. However, > 'show_progress' is used to directly send progress information to the > multi-pack-index writing logic which does not use a child process. > > The fix here is to modify 'show_progress' to be false if po_opts.quiet > is true, and isatty(2) otherwise. This new expectation simplifies a > later condition that checks both.
Makes sense. I wondered if you might have to decide what to do with "--progress --quiet", but we do not have an explicit progress option for git-repack in the first place.
> This is difficult to test because the isatty(2) already prevents the > progess indicators from appearing when we redirect stderr to a file.
You'd need test_terminal. Something like this:
diff --git a/t/t7700-repack.sh b/t/t7700-repack.sh index 8c4ba6500b..b673c49650 100755 --- a/t/t7700-repack.sh +++ b/t/t7700-repack.sh @@ -5,6 +5,7 @@ test_description='git repack works correctly' . ./test-lib.sh . "${TEST_DIRECTORY}/lib-bitmap.sh" . "${TEST_DIRECTORY}/lib-midx.sh" +. "${TEST_DIRECTORY}/lib-terminal.sh" commit_and_pack () { test_commit "$@" 1>&2 && @@ -387,4 +388,10 @@ test_expect_success '--write-midx -b packs non-kept objects' ' ) ' +test_expect_success TTY '--quiet disables progress' ' + test_terminal env GIT_PROGRESS_DELAY=0 \ + git -C midx repack -ad --quiet --write-midx 2>stderr && + test_must_be_empty stderr +' + test_done -Peff