git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: "Derrick Stolee via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: ryenus@gmail.com, stolee@gmail.com, peff@peff.net,
	szeder.dev@gmail.com, Derrick Stolee <dstolee@microsoft.com>,
	Junio C Hamano <gitster@pobox.com>,
	Derrick Stolee <dstolee@microsoft.com>
Subject: [PATCH v4 1/2] progress: create GIT_PROGRESS_DELAY
Date: Thu, 21 Nov 2019 15:51:55 +0000	[thread overview]
Message-ID: <a7acdf9c8f8c85f9f39750315716f21e83ce67c6.1574351516.git.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.450.v4.git.1574351516.gitgitgadget@gmail.com>

From: Derrick Stolee <dstolee@microsoft.com>

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@peff.net>
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
---
 Documentation/git.txt   |  4 ++++
 progress.c              | 15 +++++++++++++--
 t/t5318-commit-graph.sh |  4 ++--
 t/t6500-gc.sh           |  3 +--
 4 files changed, 20 insertions(+), 6 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..19805ac646 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
 
@@ -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)
diff --git a/t/t5318-commit-graph.sh b/t/t5318-commit-graph.sh
index d42b3efe39..0824857e1f 100755
--- a/t/t5318-commit-graph.sh
+++ b/t/t5318-commit-graph.sh
@@ -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
 '
 
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 &&
 	test_i18ngrep "Computing commit graph generation numbers" stderr
 '
 
-- 
gitgitgadget


  reply	other threads:[~2019-11-21 15:52 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-05 16:05 [PATCH 0/1] commit-graph: use start_delayed_progress() Derrick Stolee via GitGitGadget
2019-11-05 16:05 ` [PATCH 1/1] " Derrick Stolee via GitGitGadget
2019-11-05 17:38   ` Derrick Stolee
2019-11-05 20:14 ` [PATCH v2 0/1] " Derrick Stolee via GitGitGadget
2019-11-05 20:14   ` [PATCH v2 1/1] " Derrick Stolee via GitGitGadget
2019-11-06  4:09     ` Jeff King
2019-11-06 13:21       ` Derrick Stolee
2019-11-07  6:40         ` Jeff King
2019-11-07 13:30           ` Derrick Stolee
2019-11-07  4:37       ` Junio C Hamano
2019-11-07  6:43         ` Jeff King
2019-11-07  9:51           ` Junio C Hamano
2019-11-07 17:46   ` [PATCH v3 0/2] " Derrick Stolee via GitGitGadget
2019-11-07 17:46     ` [PATCH v3 1/2] progress: create GIT_PROGRESS_DELAY Derrick Stolee via GitGitGadget
2019-11-07 21:22       ` Jeff King
2019-11-11 14:27       ` SZEDER Gábor
2019-11-07 17:46     ` [PATCH v3 2/2] commit-graph: use start_delayed_progress() Derrick Stolee via GitGitGadget
2019-11-07 21:26       ` Jeff King
2019-11-21 23:03         ` SZEDER Gábor
2019-11-21 15:51     ` [PATCH v4 0/2] " Derrick Stolee via GitGitGadget
2019-11-21 15:51       ` Derrick Stolee via GitGitGadget [this message]
2019-11-22  7:15         ` [PATCH v4 1/2] progress: create GIT_PROGRESS_DELAY Jeff King
2019-11-21 15:51       ` [PATCH v4 2/2] commit-graph: use start_delayed_progress() Derrick Stolee via GitGitGadget
2019-11-22  7:17         ` Jeff King
2019-11-25 18:57           ` Derrick Stolee
2019-11-25 21:28       ` [PATCH v5 0/2] " Derrick Stolee via GitGitGadget
2019-11-25 21:28         ` [PATCH v5 1/2] progress: create GIT_PROGRESS_DELAY Derrick Stolee via GitGitGadget
2019-11-25 21:28         ` [PATCH v5 2/2] commit-graph: use start_delayed_progress() Derrick Stolee via GitGitGadget
2019-11-26 12:20         ` [PATCH v5 0/2] " Jeff King
2019-11-26 15:39           ` Derrick Stolee
2019-11-30 14:36             ` Junio C Hamano
2019-12-01  9:33               ` SZEDER Gábor

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a7acdf9c8f8c85f9f39750315716f21e83ce67c6.1574351516.git.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=dstolee@microsoft.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=peff@peff.net \
    --cc=ryenus@gmail.com \
    --cc=stolee@gmail.com \
    --cc=szeder.dev@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).