Merge branch 'ds/commit-graph-delay-gen-progress'

One kind of progress messages were always given during commit-graph
generation, instead of following the "if it takes more than two
seconds, show progress" pattern, which has been corrected.

* ds/commit-graph-delay-gen-progress:
  commit-graph: use start_delayed_progress()
  progress: create GIT_PROGRESS_DELAY
This commit is contained in:
Junio C Hamano 2019-12-10 13:11:43 -08:00
commit 41dac79c2f
5 changed files with 23 additions and 8 deletions

View file

@ -544,6 +544,10 @@ other
a pager. See also the `core.pager` option in
linkgit:git-config[1].
`GIT_PROGRESS_DELAY`::
A number controlling how many seconds to delay before showing
optional progress indicators. Defaults to 2.
`GIT_EDITOR`::
This environment variable overrides `$EDITOR` and `$VISUAL`.
It is used by several Git commands when, on interactive mode,

View file

@ -1100,7 +1100,7 @@ static void compute_generation_numbers(struct write_commit_graph_context *ctx)
struct commit_list *list = NULL;
if (ctx->report_progress)
ctx->progress = start_progress(
ctx->progress = start_delayed_progress(
_("Computing commit graph generation numbers"),
ctx->commits.nr);
for (i = 0; i < ctx->commits.nr; i++) {

View file

@ -14,6 +14,7 @@
#include "strbuf.h"
#include "trace.h"
#include "utf8.h"
#include "config.h"
#define TP_IDX_MAX 8
@ -267,9 +268,19 @@ static struct progress *start_progress_delay(const char *title, uint64_t total,
return progress;
}
static int get_default_delay(void)
{
static int delay_in_secs = -1;
if (delay_in_secs < 0)
delay_in_secs = git_env_ulong("GIT_PROGRESS_DELAY", 2);
return delay_in_secs;
}
struct progress *start_delayed_progress(const char *title, uint64_t total)
{
return start_progress_delay(title, total, 2, 0);
return start_progress_delay(title, total, get_default_delay(), 0);
}
struct progress *start_progress(const char *title, uint64_t total)
@ -294,7 +305,7 @@ struct progress *start_sparse_progress(const char *title, uint64_t total)
struct progress *start_delayed_sparse_progress(const char *title,
uint64_t total)
{
return start_progress_delay(title, total, 2, 1);
return start_progress_delay(title, total, get_default_delay(), 1);
}
static void finish_if_sparse(struct progress *progress)

View file

@ -132,7 +132,7 @@ test_expect_success 'commit-graph write progress off for redirected stderr' '
test_expect_success 'commit-graph write force progress on for stderr' '
cd "$TRASH_DIRECTORY/full" &&
git commit-graph write --progress 2>err &&
GIT_PROGRESS_DELAY=0 git commit-graph write --progress 2>err &&
test_file_not_empty err
'
@ -150,7 +150,7 @@ test_expect_success 'commit-graph verify progress off for redirected stderr' '
test_expect_success 'commit-graph verify force progress on for stderr' '
cd "$TRASH_DIRECTORY/full" &&
git commit-graph verify --progress 2>err &&
GIT_PROGRESS_DELAY=0 git commit-graph verify --progress 2>err &&
test_file_not_empty err
'

View file

@ -103,14 +103,14 @@ test_expect_success 'auto gc with too many loose objects does not attempt to cre
'
test_expect_success 'gc --no-quiet' '
git -c gc.writeCommitGraph=true gc --no-quiet >stdout 2>stderr &&
GIT_PROGRESS_DELAY=0 git -c gc.writeCommitGraph=true gc --no-quiet >stdout 2>stderr &&
test_must_be_empty stdout &&
test_line_count = 1 stderr &&
test_i18ngrep "Computing commit graph generation numbers" stderr
'
test_expect_success TTY 'with TTY: gc --no-quiet' '
test_terminal git -c gc.writeCommitGraph=true gc --no-quiet >stdout 2>stderr &&
test_terminal env GIT_PROGRESS_DELAY=0 \
git -c gc.writeCommitGraph=true gc --no-quiet >stdout 2>stderr &&
test_must_be_empty stdout &&
test_i18ngrep "Enumerating objects" stderr &&
test_i18ngrep "Computing commit graph generation numbers" stderr