* [PATCH v2 00/10] teach --progress to transport-related builtins
@ 2010-02-24 12:50 Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 01/10] Documentation/git-clone: mention progress in -v Tay Ray Chuan
` (9 more replies)
0 siblings, 10 replies; 11+ messages in thread
From: Tay Ray Chuan @ 2010-02-24 12:50 UTC (permalink / raw)
To: Git Mailing List; +Cc: Junio C Hamano, Jeff King, Sebastian Thiel
This patch series adds --progress to:
- git-fetch
- git-pull
- git-push
Changes from v1:
- rebased on git/next and resolved a conflict with the recent
refactoring of print_push_status() in transports.
- add a new patch for git-clone's documentation that mentions
the effect of the -v/--verbose option on progress reporting.
This should have been done with 5a518ad (clone: use --progress to
force progress reporting), as per Miklos's suggestion
(<20091227012032.GE25474@genesis.frugalware.org>).
- put verbosity options (-v and -q) in a common area for the
documentation for git-pull, as per Junio's suggestion
(<7vhbpe5jvo.fsf@alter.siamese.dyndns.org>).
- teach --progress to git-fetch and git-pull in one patch instead of
two previously; after all, git-pull is a wrapper of git-fetch.
Contents:
[PATCH v2 01/10] Documentation/git-clone: mention progress in -v
[PATCH v2 02/10] Documentation/git-pull: put verbosity options before merge/fetch ones
[PATCH v2 03/10] Documentation/git-push: put --quiet before --verbose
[PATCH v2 04/10] fetch: refactor verbosity option handling into transport.[ch]
[PATCH v2 05/10] push: support multiple levels of verbosity
[PATCH v2 06/10] clone: support multiple levels of verbosity
[PATCH v2 07/10] transport->progress: use flag authoritatively
[PATCH v2 08/10] push: learn --progress
[PATCH v2 09/10] fetch and pull: learn --progress
[PATCH v2 10/10] transport: update flags to be in running order
Documentation/fetch-options.txt | 9 ++++++++-
Documentation/git-clone.txt | 3 ++-
Documentation/git-pull.txt | 10 ++++++++++
Documentation/git-push.txt | 15 +++++++++++----
Documentation/merge-options.txt | 2 ++
builtin-clone.c | 19 ++++++-------------
builtin-fetch.c | 7 +++----
builtin-push.c | 11 ++++++++---
git-pull.sh | 6 ++++--
transport-helper.c | 4 +---
transport.c | 31 ++++++++++++++++++++++++++-----
transport.h | 15 ++++++++++-----
12 files changed, 91 insertions(+), 41 deletions(-)
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2 01/10] Documentation/git-clone: mention progress in -v
2010-02-24 12:50 [PATCH v2 00/10] teach --progress to transport-related builtins Tay Ray Chuan
@ 2010-02-24 12:50 ` Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 02/10] Documentation/git-pull: put verbosity options before merge/fetch ones Tay Ray Chuan
` (8 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Tay Ray Chuan @ 2010-02-24 12:50 UTC (permalink / raw)
To: Git Mailing List; +Cc: Junio C Hamano, Jeff King, Sebastian Thiel
After 5a518ad (clone: use --progress to force progress reporting),
-v/--verbose did not affect whether progress status was reported to
stderr, and users accustomed to using -v to do so since 21188b1
(Implement git clone -v) may be confused.
Mitigate such risks by stating -v does not affect progress in the
documentation.
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
---
New in v2.
This should have been done with 5a518ad (clone: use --progress to
force progress reporting), as per Miklos's suggestion
(<20091227012032.GE25474@genesis.frugalware.org>).
Documentation/git-clone.txt | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt
index 88ea624..75b9848 100644
--- a/Documentation/git-clone.txt
+++ b/Documentation/git-clone.txt
@@ -102,7 +102,8 @@ objects from the source repository into a pack in the cloned repository.
--verbose::
-v::
- Run verbosely.
+ Run verbosely. Does not affect the reporting of progress status
+ to the standard error stream.
--progress::
Progress status is reported on the standard error stream
--
1.7.0.20.gcb44ed
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 02/10] Documentation/git-pull: put verbosity options before merge/fetch ones
2010-02-24 12:50 [PATCH v2 00/10] teach --progress to transport-related builtins Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 01/10] Documentation/git-clone: mention progress in -v Tay Ray Chuan
@ 2010-02-24 12:50 ` Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 03/10] Documentation/git-push: put --quiet before --verbose Tay Ray Chuan
` (7 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Tay Ray Chuan @ 2010-02-24 12:50 UTC (permalink / raw)
To: Git Mailing List; +Cc: Junio C Hamano, Jeff King, Sebastian Thiel
After 3f7a9b5 (Documentation/git-pull.txt: Add subtitles above included
option files, Thu Oct 22 2009), the -q/-v options were mentioned only
for the merge options section, giving the impression that git-fetch did
not take those arguments.
Follow 90e4311 (git-pull: do not mention --quiet and --verbose twice,
Mon Sep 7 2009) and hide -q/-v for merge options, while mentioning -q/-v
before the merge- and fetch-specific options.
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
---
Changes from v1:
- put verbosity options (-v and -q) in a common area for the
documentation for git-pull, as per Junio's suggestion
(<7vhbpe5jvo.fsf@alter.siamese.dyndns.org>).
Documentation/git-pull.txt | 8 ++++++++
Documentation/merge-options.txt | 2 ++
2 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/Documentation/git-pull.txt b/Documentation/git-pull.txt
index 31f42ea..d47f9dd 100644
--- a/Documentation/git-pull.txt
+++ b/Documentation/git-pull.txt
@@ -31,6 +31,14 @@ in a state that is hard to back out of in the case of a conflict.
OPTIONS
-------
+-q::
+--quiet::
+ Pass --quiet to git-fetch and git-merge.
+
+-v::
+--verbose::
+ Pass --verbose to git-fetch and git-merge.
+
Options related to merging
~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/Documentation/merge-options.txt b/Documentation/merge-options.txt
index 3b83dba..37ce9a1 100644
--- a/Documentation/merge-options.txt
+++ b/Documentation/merge-options.txt
@@ -67,6 +67,7 @@ option can be used to override --squash.
Synonyms to --stat and --no-stat; these are deprecated and will be
removed in the future.
+ifndef::git-pull[]
-q::
--quiet::
Operate quietly.
@@ -74,6 +75,7 @@ option can be used to override --squash.
-v::
--verbose::
Be verbose.
+endif::git-pull[]
-X <option>::
--strategy-option=<option>::
--
1.7.0.20.gcb44ed
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 03/10] Documentation/git-push: put --quiet before --verbose
2010-02-24 12:50 [PATCH v2 00/10] teach --progress to transport-related builtins Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 01/10] Documentation/git-clone: mention progress in -v Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 02/10] Documentation/git-pull: put verbosity options before merge/fetch ones Tay Ray Chuan
@ 2010-02-24 12:50 ` Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 04/10] fetch: refactor verbosity option handling into transport.[ch] Tay Ray Chuan
` (6 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Tay Ray Chuan @ 2010-02-24 12:50 UTC (permalink / raw)
To: Git Mailing List; +Cc: Junio C Hamano, Jeff King, Sebastian Thiel
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
---
Documentation/git-push.txt | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt
index 49b6bd9..ddb78eb 100644
--- a/Documentation/git-push.txt
+++ b/Documentation/git-push.txt
@@ -146,15 +146,15 @@ useful if you write an alias or script around 'git push'.
receiver share many of the same objects in common. The default is
\--thin.
--v::
---verbose::
- Run verbosely.
-
-q::
--quiet::
Suppress all output, including the listing of updated refs,
unless an error occurs.
+-v::
+--verbose::
+ Run verbosely.
+
include::urls-remotes.txt[]
OUTPUT
--
1.7.0.20.gcb44ed
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 04/10] fetch: refactor verbosity option handling into transport.[ch]
2010-02-24 12:50 [PATCH v2 00/10] teach --progress to transport-related builtins Tay Ray Chuan
` (2 preceding siblings ...)
2010-02-24 12:50 ` [PATCH v2 03/10] Documentation/git-push: put --quiet before --verbose Tay Ray Chuan
@ 2010-02-24 12:50 ` Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 05/10] push: support multiple levels of verbosity Tay Ray Chuan
` (5 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Tay Ray Chuan @ 2010-02-24 12:50 UTC (permalink / raw)
To: Git Mailing List; +Cc: Junio C Hamano, Jeff King, Sebastian Thiel
transport_set_verbosity() is now provided to transport users.
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
---
builtin-fetch.c | 5 +----
transport.c | 8 ++++++++
transport.h | 1 +
3 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/builtin-fetch.c b/builtin-fetch.c
index d3b9d8a..a7c7e67 100644
--- a/builtin-fetch.c
+++ b/builtin-fetch.c
@@ -823,10 +823,7 @@ static int fetch_one(struct remote *remote, int argc, const char **argv)
die("Where do you want to fetch from today?");
transport = transport_get(remote, NULL);
- if (verbosity >= 2)
- transport->verbose = verbosity <= 3 ? verbosity : 3;
- if (verbosity < 0)
- transport->verbose = -1;
+ transport_set_verbosity(transport, verbosity);
if (upload_pack)
set_option(TRANS_OPT_UPLOADPACK, upload_pack);
if (keep)
diff --git a/transport.c b/transport.c
index 1a360cf..54f5ede 100644
--- a/transport.c
+++ b/transport.c
@@ -1012,6 +1012,14 @@ int transport_set_option(struct transport *transport,
return 1;
}
+void transport_set_verbosity(struct transport *transport, int verbosity)
+{
+ if (verbosity >= 2)
+ transport->verbose = verbosity <= 3 ? verbosity : 3;
+ if (verbosity < 0)
+ transport->verbose = -1;
+}
+
int transport_push(struct transport *transport,
int refspec_nr, const char **refspec, int flags,
int *nonfastforward)
diff --git a/transport.h b/transport.h
index 096f6e9..5a5ce3a 100644
--- a/transport.h
+++ b/transport.h
@@ -129,6 +129,7 @@ struct transport *transport_get(struct remote *, const char *);
**/
int transport_set_option(struct transport *transport, const char *name,
const char *value);
+void transport_set_verbosity(struct transport *transport, int verbosity);
int transport_push(struct transport *connection,
int refspec_nr, const char **refspec, int flags,
--
1.7.0.20.gcb44ed
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 05/10] push: support multiple levels of verbosity
2010-02-24 12:50 [PATCH v2 00/10] teach --progress to transport-related builtins Tay Ray Chuan
` (3 preceding siblings ...)
2010-02-24 12:50 ` [PATCH v2 04/10] fetch: refactor verbosity option handling into transport.[ch] Tay Ray Chuan
@ 2010-02-24 12:50 ` Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 06/10] clone: " Tay Ray Chuan
` (4 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Tay Ray Chuan @ 2010-02-24 12:50 UTC (permalink / raw)
To: Git Mailing List; +Cc: Junio C Hamano, Jeff King, Sebastian Thiel
Remove the flags TRANSPORT_PUSH_QUIET and TRANSPORT_PUSH_VERBOSE; use
transport->verbose instead to determine verbosity for pushing.
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
---
builtin-push.c | 9 ++++++---
transport-helper.c | 1 -
transport.c | 8 ++++----
transport.h | 2 --
4 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/builtin-push.c b/builtin-push.c
index 5633f0a..0082dad 100644
--- a/builtin-push.c
+++ b/builtin-push.c
@@ -17,6 +17,7 @@ static const char * const push_usage[] = {
static int thin;
static int deleterefs;
static const char *receivepack;
+static int verbosity;
static const char **refspec;
static int refspec_nr;
@@ -105,13 +106,16 @@ static int push_with_options(struct transport *transport, int flags)
{
int err;
int nonfastforward;
+
+ transport_set_verbosity(transport, verbosity);
+
if (receivepack)
transport_set_option(transport,
TRANS_OPT_RECEIVEPACK, receivepack);
if (thin)
transport_set_option(transport, TRANS_OPT_THIN, "yes");
- if (flags & TRANSPORT_PUSH_VERBOSE)
+ if (verbosity > 0)
fprintf(stderr, "Pushing to %s\n", transport->url);
err = transport_push(transport, refspec_nr, refspec, flags,
&nonfastforward);
@@ -204,8 +208,7 @@ int cmd_push(int argc, const char **argv, const char *prefix)
int rc;
const char *repo = NULL; /* default repository */
struct option options[] = {
- OPT_BIT('q', "quiet", &flags, "be quiet", TRANSPORT_PUSH_QUIET),
- OPT_BIT('v', "verbose", &flags, "be verbose", TRANSPORT_PUSH_VERBOSE),
+ OPT__VERBOSITY(&verbosity),
OPT_STRING( 0 , "repo", &repo, "repository", "repository"),
OPT_BIT( 0 , "all", &flags, "push all refs", TRANSPORT_PUSH_ALL),
OPT_BIT( 0 , "mirror", &flags, "mirror all refs",
diff --git a/transport-helper.c b/transport-helper.c
index f822972..b868ea4 100644
--- a/transport-helper.c
+++ b/transport-helper.c
@@ -576,7 +576,6 @@ static int push_refs(struct transport *transport,
if (buf.len == 0)
return 0;
- transport->verbose = flags & TRANSPORT_PUSH_VERBOSE ? 1 : 0;
standard_options(transport);
if (flags & TRANSPORT_PUSH_DRY_RUN) {
diff --git a/transport.c b/transport.c
index 54f5ede..f29fd6c 100644
--- a/transport.c
+++ b/transport.c
@@ -786,8 +786,8 @@ static int git_transport_push(struct transport *transport, struct ref *remote_re
args.send_mirror = !!(flags & TRANSPORT_PUSH_MIRROR);
args.force_update = !!(flags & TRANSPORT_PUSH_FORCE);
args.use_thin_pack = data->options.thin;
- args.verbose = !!(flags & TRANSPORT_PUSH_VERBOSE);
- args.quiet = !!(flags & TRANSPORT_PUSH_QUIET);
+ args.verbose = (transport->verbose > 0);
+ args.quiet = (transport->verbose < 0);
args.dry_run = !!(flags & TRANSPORT_PUSH_DRY_RUN);
ret = send_pack(&args, data->fd, data->conn, remote_refs,
@@ -1038,8 +1038,8 @@ int transport_push(struct transport *transport,
transport->get_refs_list(transport, 1);
struct ref *local_refs = get_local_heads();
int match_flags = MATCH_REFS_NONE;
- int verbose = flags & TRANSPORT_PUSH_VERBOSE;
- int quiet = flags & TRANSPORT_PUSH_QUIET;
+ int verbose = (transport->verbose > 0);
+ int quiet = (transport->verbose < 0);
int porcelain = flags & TRANSPORT_PUSH_PORCELAIN;
int pretend = flags & TRANSPORT_PUSH_DRY_RUN;
int ret, err;
diff --git a/transport.h b/transport.h
index 5a5ce3a..d5973ee 100644
--- a/transport.h
+++ b/transport.h
@@ -94,9 +94,7 @@ struct transport {
#define TRANSPORT_PUSH_FORCE 2
#define TRANSPORT_PUSH_DRY_RUN 4
#define TRANSPORT_PUSH_MIRROR 8
-#define TRANSPORT_PUSH_VERBOSE 16
#define TRANSPORT_PUSH_PORCELAIN 32
-#define TRANSPORT_PUSH_QUIET 64
#define TRANSPORT_PUSH_SET_UPSTREAM 128
#define TRANSPORT_SUMMARY_WIDTH (2 * DEFAULT_ABBREV + 3)
--
1.7.0.20.gcb44ed
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 06/10] clone: support multiple levels of verbosity
2010-02-24 12:50 [PATCH v2 00/10] teach --progress to transport-related builtins Tay Ray Chuan
` (4 preceding siblings ...)
2010-02-24 12:50 ` [PATCH v2 05/10] push: support multiple levels of verbosity Tay Ray Chuan
@ 2010-02-24 12:50 ` Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 07/10] transport->progress: use flag authoritatively Tay Ray Chuan
` (3 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Tay Ray Chuan @ 2010-02-24 12:50 UTC (permalink / raw)
To: Git Mailing List; +Cc: Junio C Hamano, Jeff King, Sebastian Thiel
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
---
builtin-clone.c | 16 ++++++----------
1 files changed, 6 insertions(+), 10 deletions(-)
diff --git a/builtin-clone.c b/builtin-clone.c
index 58bacbd..959fe4b 100644
--- a/builtin-clone.c
+++ b/builtin-clone.c
@@ -37,18 +37,17 @@ static const char * const builtin_clone_usage[] = {
NULL
};
-static int option_quiet, option_no_checkout, option_bare, option_mirror;
+static int option_no_checkout, option_bare, option_mirror;
static int option_local, option_no_hardlinks, option_shared, option_recursive;
static char *option_template, *option_reference, *option_depth;
static char *option_origin = NULL;
static char *option_branch = NULL;
static char *option_upload_pack = "git-upload-pack";
-static int option_verbose;
+static int option_verbosity;
static int option_progress;
static struct option builtin_clone_options[] = {
- OPT__QUIET(&option_quiet),
- OPT__VERBOSE(&option_verbose),
+ OPT__VERBOSITY(&option_verbosity),
OPT_BOOLEAN(0, "progress", &option_progress,
"force progress reporting"),
OPT_BOOLEAN('n', "no-checkout", &option_no_checkout,
@@ -462,7 +461,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
die("could not create leading directories of '%s'", git_dir);
set_git_dir(make_absolute_path(git_dir));
- init_db(option_template, option_quiet ? INIT_DB_QUIET : 0);
+ init_db(option_template, (option_verbosity < 0) ? INIT_DB_QUIET : 0);
/*
* At this point, the config exists, so we do not need the
@@ -526,10 +525,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
transport_set_option(transport, TRANS_OPT_DEPTH,
option_depth);
- if (option_quiet)
- transport->verbose = -1;
- else if (option_verbose)
- transport->verbose = 1;
+ transport_set_verbosity(transport, option_verbosity);
if (option_progress)
transport->progress = 1;
@@ -641,7 +637,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
opts.update = 1;
opts.merge = 1;
opts.fn = oneway_merge;
- opts.verbose_update = !option_quiet;
+ opts.verbose_update = (option_verbosity > 0);
opts.src_index = &the_index;
opts.dst_index = &the_index;
--
1.7.0.20.gcb44ed
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 07/10] transport->progress: use flag authoritatively
2010-02-24 12:50 [PATCH v2 00/10] teach --progress to transport-related builtins Tay Ray Chuan
` (5 preceding siblings ...)
2010-02-24 12:50 ` [PATCH v2 06/10] clone: " Tay Ray Chuan
@ 2010-02-24 12:50 ` Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 08/10] push: learn --progress Tay Ray Chuan
` (2 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Tay Ray Chuan @ 2010-02-24 12:50 UTC (permalink / raw)
To: Git Mailing List; +Cc: Junio C Hamano, Jeff King, Sebastian Thiel
Set transport->progress in transport.c::transport_set_verbosity() after
checking for the appropriate conditions (eg. --progress, isatty(2)),
and thereafter use it without having to check again.
The rules used are as follows (processing aborts when a rule is
satisfied):
1. Report progress, if force_progress is 1 (ie. --progress).
2. Don't report progress, if verbosity < 0 (ie. -q/--quiet).
3. Report progress if isatty(2) is 1.
This changes progress reporting behaviour such that if both --progress
and --quiet are specified, progress is reported.
In two areas, the logic to determine whether to *not* show progress is
changed to simply use the negation of transport->progress. This changes
behaviour in some ways (see previous paragraph for details).
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
---
builtin-clone.c | 5 +----
builtin-fetch.c | 2 +-
builtin-push.c | 2 +-
transport-helper.c | 3 +--
transport.c | 17 +++++++++++++++--
transport.h | 10 ++++++++--
6 files changed, 27 insertions(+), 12 deletions(-)
diff --git a/builtin-clone.c b/builtin-clone.c
index 959fe4b..05f8fb4 100644
--- a/builtin-clone.c
+++ b/builtin-clone.c
@@ -525,10 +525,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
transport_set_option(transport, TRANS_OPT_DEPTH,
option_depth);
- transport_set_verbosity(transport, option_verbosity);
-
- if (option_progress)
- transport->progress = 1;
+ transport_set_verbosity(transport, option_verbosity, option_progress);
if (option_upload_pack)
transport_set_option(transport, TRANS_OPT_UPLOADPACK,
diff --git a/builtin-fetch.c b/builtin-fetch.c
index a7c7e67..bc3fcf3 100644
--- a/builtin-fetch.c
+++ b/builtin-fetch.c
@@ -823,7 +823,7 @@ static int fetch_one(struct remote *remote, int argc, const char **argv)
die("Where do you want to fetch from today?");
transport = transport_get(remote, NULL);
- transport_set_verbosity(transport, verbosity);
+ transport_set_verbosity(transport, verbosity, 0);
if (upload_pack)
set_option(TRANS_OPT_UPLOADPACK, upload_pack);
if (keep)
diff --git a/builtin-push.c b/builtin-push.c
index 0082dad..dce3152 100644
--- a/builtin-push.c
+++ b/builtin-push.c
@@ -107,7 +107,7 @@ static int push_with_options(struct transport *transport, int flags)
int err;
int nonfastforward;
- transport_set_verbosity(transport, verbosity);
+ transport_set_verbosity(transport, verbosity, 0);
if (receivepack)
transport_set_option(transport,
diff --git a/transport-helper.c b/transport-helper.c
index b868ea4..2638781 100644
--- a/transport-helper.c
+++ b/transport-helper.c
@@ -279,9 +279,8 @@ static void standard_options(struct transport *t)
char buf[16];
int n;
int v = t->verbose;
- int no_progress = v < 0 || (!t->progress && !isatty(2));
- set_helper_option(t, "progress", !no_progress ? "true" : "false");
+ set_helper_option(t, "progress", t->progress ? "true" : "false");
n = snprintf(buf, sizeof(buf), "%d", v + 1);
if (n >= sizeof(buf))
diff --git a/transport.c b/transport.c
index f29fd6c..6d85447 100644
--- a/transport.c
+++ b/transport.c
@@ -526,7 +526,7 @@ static int fetch_refs_via_pack(struct transport *transport,
args.include_tag = data->options.followtags;
args.verbose = (transport->verbose > 0);
args.quiet = (transport->verbose < 0);
- args.no_progress = args.quiet || (!transport->progress && !isatty(2));
+ args.no_progress = !transport->progress;
args.depth = data->options.depth;
for (i = 0; i < nr_heads; i++)
@@ -913,6 +913,8 @@ struct transport *transport_get(struct remote *remote, const char *url)
const char *helper;
struct transport *ret = xcalloc(1, sizeof(*ret));
+ ret->progress = isatty(2);
+
if (!remote)
die("No remote provided to transport_get()");
@@ -1012,12 +1014,23 @@ int transport_set_option(struct transport *transport,
return 1;
}
-void transport_set_verbosity(struct transport *transport, int verbosity)
+void transport_set_verbosity(struct transport *transport, int verbosity,
+ int force_progress)
{
if (verbosity >= 2)
transport->verbose = verbosity <= 3 ? verbosity : 3;
if (verbosity < 0)
transport->verbose = -1;
+
+ /**
+ * Rules used to determine whether to report progress (processing aborts
+ * when a rule is satisfied):
+ *
+ * 1. Report progress, if force_progress is 1 (ie. --progress).
+ * 2. Don't report progress, if verbosity < 0 (ie. -q/--quiet ).
+ * 3. Report progress if isatty(2) is 1.
+ **/
+ transport->progress = force_progress || (verbosity >= 0 && isatty(2));
}
int transport_push(struct transport *transport,
diff --git a/transport.h b/transport.h
index d5973ee..531731e 100644
--- a/transport.h
+++ b/transport.h
@@ -80,7 +80,12 @@ struct transport {
int (*disconnect)(struct transport *connection);
char *pack_lockfile;
signed verbose : 3;
- /* Force progress even if stderr is not a tty */
+ /**
+ * Transports should not set this directly, and should use this
+ * value without having to check isatty(2), -q/--quiet
+ * (transport->verbose < 0), etc. - checking has already been done
+ * in transport_set_verbosity().
+ **/
unsigned progress : 1;
/*
* If transport is at least potentially smart, this points to
@@ -127,7 +132,8 @@ struct transport *transport_get(struct remote *, const char *);
**/
int transport_set_option(struct transport *transport, const char *name,
const char *value);
-void transport_set_verbosity(struct transport *transport, int verbosity);
+void transport_set_verbosity(struct transport *transport, int verbosity,
+ int force_progress);
int transport_push(struct transport *connection,
int refspec_nr, const char **refspec, int flags,
--
1.7.0.20.gcb44ed
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 08/10] push: learn --progress
2010-02-24 12:50 [PATCH v2 00/10] teach --progress to transport-related builtins Tay Ray Chuan
` (6 preceding siblings ...)
2010-02-24 12:50 ` [PATCH v2 07/10] transport->progress: use flag authoritatively Tay Ray Chuan
@ 2010-02-24 12:50 ` Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 09/10] fetch and pull: " Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 10/10] transport: update flags to be in running order Tay Ray Chuan
9 siblings, 0 replies; 11+ messages in thread
From: Tay Ray Chuan @ 2010-02-24 12:50 UTC (permalink / raw)
To: Git Mailing List; +Cc: Junio C Hamano, Jeff King, Sebastian Thiel
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
---
Documentation/git-push.txt | 9 ++++++++-
builtin-push.c | 4 +++-
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt
index ddb78eb..59dc8b1 100644
--- a/Documentation/git-push.txt
+++ b/Documentation/git-push.txt
@@ -149,12 +149,19 @@ useful if you write an alias or script around 'git push'.
-q::
--quiet::
Suppress all output, including the listing of updated refs,
- unless an error occurs.
+ unless an error occurs. Progress is not reported to the standard
+ error stream.
-v::
--verbose::
Run verbosely.
+--progress::
+ Progress status is reported on the standard error stream
+ by default when it is attached to a terminal, unless -q
+ is specified. This flag forces progress status even if the
+ standard error stream is not directed to a terminal.
+
include::urls-remotes.txt[]
OUTPUT
diff --git a/builtin-push.c b/builtin-push.c
index dce3152..ba9fe49 100644
--- a/builtin-push.c
+++ b/builtin-push.c
@@ -18,6 +18,7 @@ static int thin;
static int deleterefs;
static const char *receivepack;
static int verbosity;
+static int progress;
static const char **refspec;
static int refspec_nr;
@@ -107,7 +108,7 @@ static int push_with_options(struct transport *transport, int flags)
int err;
int nonfastforward;
- transport_set_verbosity(transport, verbosity, 0);
+ transport_set_verbosity(transport, verbosity, progress);
if (receivepack)
transport_set_option(transport,
@@ -223,6 +224,7 @@ int cmd_push(int argc, const char **argv, const char *prefix)
OPT_STRING( 0 , "exec", &receivepack, "receive-pack", "receive pack program"),
OPT_BIT('u', "set-upstream", &flags, "set upstream for git pull/status",
TRANSPORT_PUSH_SET_UPSTREAM),
+ OPT_BOOLEAN(0, "progress", &progress, "force progress reporting"),
OPT_END()
};
--
1.7.0.20.gcb44ed
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 09/10] fetch and pull: learn --progress
2010-02-24 12:50 [PATCH v2 00/10] teach --progress to transport-related builtins Tay Ray Chuan
` (7 preceding siblings ...)
2010-02-24 12:50 ` [PATCH v2 08/10] push: learn --progress Tay Ray Chuan
@ 2010-02-24 12:50 ` Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 10/10] transport: update flags to be in running order Tay Ray Chuan
9 siblings, 0 replies; 11+ messages in thread
From: Tay Ray Chuan @ 2010-02-24 12:50 UTC (permalink / raw)
To: Git Mailing List; +Cc: Junio C Hamano, Jeff King, Sebastian Thiel
Note that in the documentation for git-pull, documentation for the
--progress option is displayed under the "Options related to fetching"
subtitle via fetch-options.txt.
Also, update the documentation of the -q/--quiet option for git-pull to
mention its effect on progress reporting during fetching.
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
---
Changes from v1:
- teach --progress to git-fetch and git-pull in one patch instead of
two previously; after all, git-pull is a wrapper of git-fetch.
Documentation/fetch-options.txt | 9 ++++++++-
Documentation/git-pull.txt | 4 +++-
builtin-fetch.c | 4 +++-
git-pull.sh | 6 ++++--
4 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/Documentation/fetch-options.txt b/Documentation/fetch-options.txt
index fe716b2..044ec88 100644
--- a/Documentation/fetch-options.txt
+++ b/Documentation/fetch-options.txt
@@ -78,9 +78,16 @@ ifndef::git-pull[]
-q::
--quiet::
Pass --quiet to git-fetch-pack and silence any other internally
- used git commands.
+ used git commands. Progress is not reported to the standard error
+ stream.
-v::
--verbose::
Be verbose.
endif::git-pull[]
+
+--progress::
+ Progress status is reported on the standard error stream
+ by default when it is attached to a terminal, unless -q
+ is specified. This flag forces progress status even if the
+ standard error stream is not directed to a terminal.
diff --git a/Documentation/git-pull.txt b/Documentation/git-pull.txt
index d47f9dd..ab4de10 100644
--- a/Documentation/git-pull.txt
+++ b/Documentation/git-pull.txt
@@ -33,7 +33,9 @@ OPTIONS
-q::
--quiet::
- Pass --quiet to git-fetch and git-merge.
+ This is passed to both underlying git-fetch to squelch reporting of
+ during transfer, and underlying git-merge to squelch output during
+ merging.
-v::
--verbose::
diff --git a/builtin-fetch.c b/builtin-fetch.c
index bc3fcf3..00fded2 100644
--- a/builtin-fetch.c
+++ b/builtin-fetch.c
@@ -28,6 +28,7 @@ enum {
};
static int all, append, dry_run, force, keep, multiple, prune, update_head_ok, verbosity;
+static int progress;
static int tags = TAGS_DEFAULT;
static const char *depth;
static const char *upload_pack;
@@ -57,6 +58,7 @@ static struct option builtin_fetch_options[] = {
OPT_BOOLEAN('k', "keep", &keep, "keep downloaded pack"),
OPT_BOOLEAN('u', "update-head-ok", &update_head_ok,
"allow updating of HEAD ref"),
+ OPT_BOOLEAN(0, "progress", &progress, "force progress reporting"),
OPT_STRING(0, "depth", &depth, "DEPTH",
"deepen history of shallow clone"),
OPT_END()
@@ -823,7 +825,7 @@ static int fetch_one(struct remote *remote, int argc, const char **argv)
die("Where do you want to fetch from today?");
transport = transport_get(remote, NULL);
- transport_set_verbosity(transport, verbosity, 0);
+ transport_set_verbosity(transport, verbosity, progress);
if (upload_pack)
set_option(TRANS_OPT_UPLOADPACK, upload_pack);
if (keep)
diff --git a/git-pull.sh b/git-pull.sh
index 38331a8..d45b50c 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -38,7 +38,7 @@ test -z "$(git ls-files -u)" || die_conflict
test -f "$GIT_DIR/MERGE_HEAD" && die_merge
strategy_args= diffstat= no_commit= squash= no_ff= ff_only=
-log_arg= verbosity=
+log_arg= verbosity= progress=
merge_args=
curr_branch=$(git symbolic-ref -q HEAD)
curr_branch_short=$(echo "$curr_branch" | sed "s|refs/heads/||")
@@ -50,6 +50,8 @@ do
verbosity="$verbosity -q" ;;
-v|--verbose)
verbosity="$verbosity -v" ;;
+ --progress)
+ progress=--progress ;;
-n|--no-stat|--no-summary)
diffstat=--no-stat ;;
--stat|--summary)
@@ -214,7 +216,7 @@ test true = "$rebase" && {
done
}
orig_head=$(git rev-parse -q --verify HEAD)
-git fetch $verbosity --update-head-ok "$@" || exit 1
+git fetch $verbosity $progress --update-head-ok "$@" || exit 1
curr_head=$(git rev-parse -q --verify HEAD)
if test -n "$orig_head" && test "$curr_head" != "$orig_head"
--
1.7.0.20.gcb44ed
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 10/10] transport: update flags to be in running order
2010-02-24 12:50 [PATCH v2 00/10] teach --progress to transport-related builtins Tay Ray Chuan
` (8 preceding siblings ...)
2010-02-24 12:50 ` [PATCH v2 09/10] fetch and pull: " Tay Ray Chuan
@ 2010-02-24 12:50 ` Tay Ray Chuan
9 siblings, 0 replies; 11+ messages in thread
From: Tay Ray Chuan @ 2010-02-24 12:50 UTC (permalink / raw)
To: Git Mailing List; +Cc: Junio C Hamano, Jeff King, Sebastian Thiel
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
---
Changes from v1:
- Rebased on git/next and resolved a conflict with the recent
refactoring of print_push_status() in transports.
transport.h | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/transport.h b/transport.h
index 531731e..c61aacf 100644
--- a/transport.h
+++ b/transport.h
@@ -99,8 +99,8 @@ struct transport {
#define TRANSPORT_PUSH_FORCE 2
#define TRANSPORT_PUSH_DRY_RUN 4
#define TRANSPORT_PUSH_MIRROR 8
-#define TRANSPORT_PUSH_PORCELAIN 32
-#define TRANSPORT_PUSH_SET_UPSTREAM 128
+#define TRANSPORT_PUSH_PORCELAIN 16
+#define TRANSPORT_PUSH_SET_UPSTREAM 32
#define TRANSPORT_SUMMARY_WIDTH (2 * DEFAULT_ABBREV + 3)
/* Returns a transport suitable for the url */
--
1.7.0.20.gcb44ed
^ permalink raw reply related [flat|nested] 11+ messages in thread
end of thread, other threads:[~2010-02-24 12:51 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-24 12:50 [PATCH v2 00/10] teach --progress to transport-related builtins Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 01/10] Documentation/git-clone: mention progress in -v Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 02/10] Documentation/git-pull: put verbosity options before merge/fetch ones Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 03/10] Documentation/git-push: put --quiet before --verbose Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 04/10] fetch: refactor verbosity option handling into transport.[ch] Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 05/10] push: support multiple levels of verbosity Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 06/10] clone: " Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 07/10] transport->progress: use flag authoritatively Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 08/10] push: learn --progress Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 09/10] fetch and pull: " Tay Ray Chuan
2010-02-24 12:50 ` [PATCH v2 10/10] transport: update flags to be in running order Tay Ray Chuan
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 NNTP newsgroup(s).