On Thu, Nov 07, 2019 at 05:46:57PM +0000, Derrick Stolee via GitGitGadget wrote: > From: Derrick Stolee <dstolee@xxxxxxxxxxxxx> > > The start_delayed_progress() method is a preferred way to show > optional progress to users as it ignores steps that take less > than two seconds. However, this makes testing unreliable as tests > expect to be very fast. > > In addition, users may want to decrease or increase this time > interval depending on their preferences for terminal noise. > > Create the GIT_PROGRESS_DELAY environment variable to control > the delay set during start_delayed_progress(). Set the value > in some tests to guarantee their output remains consistent. > > Helped-by: Jeff King <peff@xxxxxxxx> > Signed-off-by: Derrick Stolee <dstolee@xxxxxxxxxxxxx> > --- > Documentation/git.txt | 4 ++++ > progress.c | 8 +++++++- > t/t5318-commit-graph.sh | 4 ++-- > t/t6500-gc.sh | 3 +-- > 4 files changed, 14 insertions(+), 5 deletions(-) > > diff --git a/Documentation/git.txt b/Documentation/git.txt > index 9b82564d1a..1c420da208 100644 > --- a/Documentation/git.txt > +++ b/Documentation/git.txt > @@ -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, > diff --git a/progress.c b/progress.c > index 0063559aab..4ad1a3c6eb 100644 > --- a/progress.c > +++ b/progress.c > @@ -14,6 +14,7 @@ > #include "strbuf.h" > #include "trace.h" > #include "utf8.h" > +#include "config.h" > > #define TP_IDX_MAX 8 > > @@ -269,7 +270,12 @@ static struct progress *start_progress_delay(const char *title, uint64_t total, > > struct progress *start_delayed_progress(const char *title, uint64_t total) > { > - return start_progress_delay(title, total, 2, 0); > + static int delay_in_secs = -1; > + > + if (delay_in_secs < 0) > + delay_in_secs = git_env_ulong("GIT_PROGRESS_DELAY", 2); > + > + return start_progress_delay(title, total, delay_in_secs, 0); > } Note that there is the similar start_delayed_sparse_progress() function, which should respect GIT_PROGRESS_DELAY as well. > diff --git a/t/t6500-gc.sh b/t/t6500-gc.sh > index c0f04dc6b0..7f79eedd1c 100755 > --- a/t/t6500-gc.sh > +++ b/t/t6500-gc.sh > @@ -103,9 +103,8 @@ 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 && Good, I'm glad to see this "how many progress lines did we print?" check gone. > test_i18ngrep "Computing commit graph generation numbers" stderr > ' > > -- > gitgitgadget >