diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-05-10 10:08:54 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-05-10 10:08:54 -0700 |
commit | 25047b88965c8954e0599fe20c88b6a03c3ee506 (patch) | |
tree | 16dba9b704b47aab166e20e36b1918f5e0a24493 | |
parent | 454bf49930f9ba7e1fc9a39d9d8650f3e798c3fd (diff) | |
parent | e304aeba20d6f26cb95c022704440a36ef309075 (diff) | |
download | git-25047b88965c8954e0599fe20c88b6a03c3ee506.tar.gz git-25047b88965c8954e0599fe20c88b6a03c3ee506.tar.xz |
Merge branch 'jk/maint-push-progress' into maint
"git push" over smart-http lost progress output a few releases ago.
By Jeff King
* jk/maint-push-progress:
t5541: test more combinations of --progress
teach send-pack about --[no-]progress
send-pack: show progress when isatty(2)
-rw-r--r-- | builtin/send-pack.c | 13 | ||||
-rw-r--r-- | remote-curl.c | 1 | ||||
-rwxr-xr-x | t/t5541-http-push.sh | 27 |
3 files changed, 39 insertions, 2 deletions
diff --git a/builtin/send-pack.c b/builtin/send-pack.c index 9df341c79..d5d7105ba 100644 --- a/builtin/send-pack.c +++ b/builtin/send-pack.c @@ -410,6 +410,7 @@ int cmd_send_pack(int argc, const char **argv, const char *prefix) const char *receivepack = "git-receive-pack"; int flags; int nonfastforward = 0; + int progress = -1; argv++; for (i = 1; i < argc; i++, argv++) { @@ -452,6 +453,14 @@ int cmd_send_pack(int argc, const char **argv, const char *prefix) args.verbose = 1; continue; } + if (!strcmp(arg, "--progress")) { + progress = 1; + continue; + } + if (!strcmp(arg, "--no-progress")) { + progress = 0; + continue; + } if (!strcmp(arg, "--thin")) { args.use_thin_pack = 1; continue; @@ -492,6 +501,10 @@ int cmd_send_pack(int argc, const char **argv, const char *prefix) } } + if (progress == -1) + progress = !args.quiet && isatty(2); + args.progress = progress; + if (args.stateless_rpc) { conn = NULL; fd[0] = 0; diff --git a/remote-curl.c b/remote-curl.c index 08962214d..04a9d6277 100644 --- a/remote-curl.c +++ b/remote-curl.c @@ -782,6 +782,7 @@ static int push_git(struct discovery *heads, int nr_spec, char **specs) argv[argc++] = "--quiet"; else if (options.verbosity > 1) argv[argc++] = "--verbose"; + argv[argc++] = options.progress ? "--progress" : "--no-progress"; argv[argc++] = url; for (i = 0; i < nr_spec; i++) argv[argc++] = specs[i]; diff --git a/t/t5541-http-push.sh b/t/t5541-http-push.sh index cc6f08171..c07973ed8 100755 --- a/t/t5541-http-push.sh +++ b/t/t5541-http-push.sh @@ -215,12 +215,35 @@ test_expect_success 'push --mirror to repo with alternates' ' git push --mirror "$HTTPD_URL"/smart/alternates-mirror.git ' -test_expect_success TTY 'quiet push' ' +test_expect_success TTY 'push shows progress when stderr is a tty' ' + cd "$ROOT_PATH"/test_repo_clone && + test_commit noisy && + test_terminal git push >output 2>&1 && + grep "^Writing objects" output +' + +test_expect_success TTY 'push --quiet silences status and progress' ' cd "$ROOT_PATH"/test_repo_clone && test_commit quiet && - test_terminal git push --quiet --no-progress 2>&1 | tee output && + test_terminal git push --quiet >output 2>&1 && test_cmp /dev/null output ' +test_expect_success TTY 'push --no-progress silences progress but not status' ' + cd "$ROOT_PATH"/test_repo_clone && + test_commit no-progress && + test_terminal git push --no-progress >output 2>&1 && + grep "^To http" output && + ! grep "^Writing objects" +' + +test_expect_success 'push --progress shows progress to non-tty' ' + cd "$ROOT_PATH"/test_repo_clone && + test_commit progress && + git push --progress >output 2>&1 && + grep "^To http" output && + grep "^Writing objects" output +' + stop_httpd test_done |