aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2012-05-10 10:08:54 -0700
committerJunio C Hamano <gitster@pobox.com>2012-05-10 10:08:54 -0700
commit25047b88965c8954e0599fe20c88b6a03c3ee506 (patch)
tree16dba9b704b47aab166e20e36b1918f5e0a24493
parent454bf49930f9ba7e1fc9a39d9d8650f3e798c3fd (diff)
parente304aeba20d6f26cb95c022704440a36ef309075 (diff)
downloadgit-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.c13
-rw-r--r--remote-curl.c1
-rwxr-xr-xt/t5541-http-push.sh27
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