git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 2/2] repack: make '--quiet' disable progress

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Dec 18, 2021, 09:55 UTC
Message-ID
<211218.861r2axmk3.gmgdl@evledraar.gmail.com>
In-Reply-To
<3eff83d9ae14023f3527dfeb419cf8259f6d053d.1639758526.git.gitgitgadget@gmail.com>
On Fri, Dec 17 2021, Derrick Stolee via GitGitGadget wrote:
Show 55 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.
>
> This is difficult to test because the isatty(2) already prevents the
> progess indicators from appearing when we redirect stderr to a file.
>
> Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
> ---
>  builtin/repack.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/builtin/repack.c b/builtin/repack.c
> index 1f128b7c90b..c393a5db774 100644
> --- a/builtin/repack.c
> +++ b/builtin/repack.c
> @@ -612,7 +612,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
>  	struct tempfile *refs_snapshot = NULL;
>  	int i, ext, ret;
>  	FILE *out;
> -	int show_progress = isatty(2);
> +	int show_progress;
>  
>  	/* variables to be filled by option parsing */
>  	int pack_everything = 0;
> @@ -725,6 +725,8 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
>  
>  	prepare_pack_objects(&cmd, &po_args);
>  
> +	show_progress = !po_args.quiet && isatty(2);
> +
>  	strvec_push(&cmd.args, "--keep-true-parents");
>  	if (!pack_kept_objects)
>  		strvec_push(&cmd.args, "--honor-pack-keep");
> @@ -926,7 +928,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
>  			}
>  			strbuf_release(&buf);
>  		}
> -		if (!po_args.quiet && show_progress)
> +		if (show_progress)
>  			opts |= PRUNE_PACKED_VERBOSE;
>  		prune_packed_objects(opts);

This seems like a good change, but the documentation could really use an update (also before this change). It just says about -q:

    Pass the -q option to git pack-objects. See git-pack-objects(1).

But do various things in "git-repack" itself differently if it's supplied.

Previous: Derrick StoleeNext: Derrick Stolee
Message 12 of 17 in “Two small 'git repack' fixes”
  1. 0/2 Two small 'git repack' fixesDerrick Stolee via GitGitGadget, Dec 17, 2021
  2. 1/2 repack: respect kept objects with '--write-midx -b'Derrick Stolee via GitGitGadget, Dec 17, 2021
  3. Jeff KingDec 17, 2021
  4. Derrick StoleeDec 20, 2021
  5. Jeff KingDec 20, 2021
  6. Ævar Arnfjörð BjarmasonDec 18, 2021
  7. 2/2 repack: make '--quiet' disable progressDerrick Stolee via GitGitGadget, Dec 17, 2021
  8. Jeff KingDec 17, 2021
  9. Derrick StoleeDec 20, 2021
  10. Jeff KingDec 20, 2021
  11. Derrick StoleeDec 20, 2021
  12. Ævar Arnfjörð BjarmasonDec 18, 2021
  13. Derrick StoleeDec 20, 2021
  14. 0/2 Two small 'git repack' fixesDerrick Stolee via GitGitGadget, Dec 20, 2021
  15. 2/2 repack: make '--quiet' disable progressDerrick Stolee via GitGitGadget, Dec 20, 2021
  16. 1/2 repack: respect kept objects with '--write-midx -b'Derrick Stolee via GitGitGadget, Dec 20, 2021
  17. Ævar Arnfjörð BjarmasonDec 20, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.