pack-objects: split implications of --all-progress from progress activation

Currently the --all-progress flag is used to use force progress display
during the writing object phase even if output goes to stdout which is
primarily the case during a push operation.  This has the unfortunate
side effect of forcing progress display even if stderr is not a
terminal.

Let's introduce the --all-progress-implied argument which has the same
intent except for actually forcing the activation of any progress
display.  With this, progress display will be automatically inhibited
whenever stderr is not a terminal, or full progress display will be
included otherwise.  This should let people use 'git push' within a cron
job without filling their logs with useless percentage displays.

Signed-off-by: Nicolas Pitre <nico@fluxnic.net>
Tested-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Nicolas Pitre 2009-11-23 12:43:50 -05:00 committed by Junio C Hamano
parent 0b624b4cee
commit 4f36627518
4 changed files with 20 additions and 5 deletions

View File

@ -9,8 +9,9 @@ git-pack-objects - Create a packed archive of objects
SYNOPSIS SYNOPSIS
-------- --------
[verse] [verse]
'git pack-objects' [-q] [--no-reuse-delta] [--delta-base-offset] [--non-empty] 'git pack-objects' [-q | --progress | --all-progress] [--all-progress-implied]
[--local] [--incremental] [--window=N] [--depth=N] [--all-progress] [--no-reuse-delta] [--delta-base-offset] [--non-empty]
[--local] [--incremental] [--window=N] [--depth=N]
[--revs [--unpacked | --all]*] [--stdout | base-name] [--revs [--unpacked | --all]*] [--stdout | base-name]
[--keep-true-parents] < object-list [--keep-true-parents] < object-list
@ -137,7 +138,7 @@ base-name::
--all-progress:: --all-progress::
When --stdout is specified then progress report is When --stdout is specified then progress report is
displayed during the object count and deltification phases displayed during the object count and compression phases
but inhibited during the write-out phase. The reason is but inhibited during the write-out phase. The reason is
that in some cases the output stream is directly linked that in some cases the output stream is directly linked
to another command which may wish to display progress to another command which may wish to display progress
@ -146,6 +147,11 @@ base-name::
report for the write-out phase as well even if --stdout is report for the write-out phase as well even if --stdout is
used. used.
--all-progress-implied::
This is used to imply --all-progress whenever progress display
is activated. Unlike --all-progress this flag doesn't actually
force any progress display by itself.
-q:: -q::
This flag makes the command not to report its progress This flag makes the command not to report its progress
on the standard error stream. on the standard error stream.

View File

@ -24,6 +24,7 @@
static const char pack_usage[] = static const char pack_usage[] =
"git pack-objects [{ -q | --progress | --all-progress }]\n" "git pack-objects [{ -q | --progress | --all-progress }]\n"
" [--all-progress-implied]\n"
" [--max-pack-size=N] [--local] [--incremental]\n" " [--max-pack-size=N] [--local] [--incremental]\n"
" [--window=N] [--window-memory=N] [--depth=N]\n" " [--window=N] [--window-memory=N] [--depth=N]\n"
" [--no-reuse-delta] [--no-reuse-object] [--delta-base-offset]\n" " [--no-reuse-delta] [--no-reuse-object] [--delta-base-offset]\n"
@ -2122,6 +2123,7 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
{ {
int use_internal_rev_list = 0; int use_internal_rev_list = 0;
int thin = 0; int thin = 0;
int all_progress_implied = 0;
uint32_t i; uint32_t i;
const char **rp_av; const char **rp_av;
int rp_ac_alloc = 64; int rp_ac_alloc = 64;
@ -2221,6 +2223,10 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
progress = 2; progress = 2;
continue; continue;
} }
if (!strcmp("--all-progress-implied", arg)) {
all_progress_implied = 1;
continue;
}
if (!strcmp("-q", arg)) { if (!strcmp("-q", arg)) {
progress = 0; progress = 0;
continue; continue;
@ -2329,6 +2335,9 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
delta_search_threads = online_cpus(); delta_search_threads = online_cpus();
#endif #endif
if (progress && all_progress_implied)
progress = 2;
prepare_packed_git(); prepare_packed_git();
if (progress) if (progress)

View File

@ -38,7 +38,7 @@ static int pack_objects(int fd, struct ref *refs, struct extra_have_objects *ext
*/ */
const char *argv[] = { const char *argv[] = {
"pack-objects", "pack-objects",
"--all-progress", "--all-progress-implied",
"--revs", "--revs",
"--stdout", "--stdout",
NULL, NULL,

View File

@ -351,7 +351,7 @@ int create_bundle(struct bundle_header *header, const char *path,
/* write pack */ /* write pack */
argv_pack[0] = "pack-objects"; argv_pack[0] = "pack-objects";
argv_pack[1] = "--all-progress"; argv_pack[1] = "--all-progress-implied";
argv_pack[2] = "--stdout"; argv_pack[2] = "--stdout";
argv_pack[3] = "--thin"; argv_pack[3] = "--thin";
argv_pack[4] = NULL; argv_pack[4] = NULL;