transport->progress: use flag authoritatively
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> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
5bd631b368
commit
d01b3c02e8
@ -525,10 +525,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
|
|||||||
transport_set_option(transport, TRANS_OPT_DEPTH,
|
transport_set_option(transport, TRANS_OPT_DEPTH,
|
||||||
option_depth);
|
option_depth);
|
||||||
|
|
||||||
transport_set_verbosity(transport, option_verbosity);
|
transport_set_verbosity(transport, option_verbosity, option_progress);
|
||||||
|
|
||||||
if (option_progress)
|
|
||||||
transport->progress = 1;
|
|
||||||
|
|
||||||
if (option_upload_pack)
|
if (option_upload_pack)
|
||||||
transport_set_option(transport, TRANS_OPT_UPLOADPACK,
|
transport_set_option(transport, TRANS_OPT_UPLOADPACK,
|
||||||
|
@ -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?");
|
die("Where do you want to fetch from today?");
|
||||||
|
|
||||||
transport = transport_get(remote, NULL);
|
transport = transport_get(remote, NULL);
|
||||||
transport_set_verbosity(transport, verbosity);
|
transport_set_verbosity(transport, verbosity, 0);
|
||||||
if (upload_pack)
|
if (upload_pack)
|
||||||
set_option(TRANS_OPT_UPLOADPACK, upload_pack);
|
set_option(TRANS_OPT_UPLOADPACK, upload_pack);
|
||||||
if (keep)
|
if (keep)
|
||||||
|
@ -107,7 +107,7 @@ static int push_with_options(struct transport *transport, int flags)
|
|||||||
int err;
|
int err;
|
||||||
int nonfastforward;
|
int nonfastforward;
|
||||||
|
|
||||||
transport_set_verbosity(transport, verbosity);
|
transport_set_verbosity(transport, verbosity, 0);
|
||||||
|
|
||||||
if (receivepack)
|
if (receivepack)
|
||||||
transport_set_option(transport,
|
transport_set_option(transport,
|
||||||
|
@ -279,9 +279,8 @@ static void standard_options(struct transport *t)
|
|||||||
char buf[16];
|
char buf[16];
|
||||||
int n;
|
int n;
|
||||||
int v = t->verbose;
|
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);
|
n = snprintf(buf, sizeof(buf), "%d", v + 1);
|
||||||
if (n >= sizeof(buf))
|
if (n >= sizeof(buf))
|
||||||
|
17
transport.c
17
transport.c
@ -526,7 +526,7 @@ static int fetch_refs_via_pack(struct transport *transport,
|
|||||||
args.include_tag = data->options.followtags;
|
args.include_tag = data->options.followtags;
|
||||||
args.verbose = (transport->verbose > 0);
|
args.verbose = (transport->verbose > 0);
|
||||||
args.quiet = (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;
|
args.depth = data->options.depth;
|
||||||
|
|
||||||
for (i = 0; i < nr_heads; i++)
|
for (i = 0; i < nr_heads; i++)
|
||||||
@ -915,6 +915,8 @@ struct transport *transport_get(struct remote *remote, const char *url)
|
|||||||
const char *helper;
|
const char *helper;
|
||||||
struct transport *ret = xcalloc(1, sizeof(*ret));
|
struct transport *ret = xcalloc(1, sizeof(*ret));
|
||||||
|
|
||||||
|
ret->progress = isatty(2);
|
||||||
|
|
||||||
if (!remote)
|
if (!remote)
|
||||||
die("No remote provided to transport_get()");
|
die("No remote provided to transport_get()");
|
||||||
|
|
||||||
@ -1013,12 +1015,23 @@ int transport_set_option(struct transport *transport,
|
|||||||
return 1;
|
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)
|
if (verbosity >= 2)
|
||||||
transport->verbose = verbosity <= 3 ? verbosity : 3;
|
transport->verbose = verbosity <= 3 ? verbosity : 3;
|
||||||
if (verbosity < 0)
|
if (verbosity < 0)
|
||||||
transport->verbose = -1;
|
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,
|
int transport_push(struct transport *transport,
|
||||||
|
10
transport.h
10
transport.h
@ -74,7 +74,12 @@ struct transport {
|
|||||||
int (*disconnect)(struct transport *connection);
|
int (*disconnect)(struct transport *connection);
|
||||||
char *pack_lockfile;
|
char *pack_lockfile;
|
||||||
signed verbose : 3;
|
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;
|
unsigned progress : 1;
|
||||||
/*
|
/*
|
||||||
* If transport is at least potentially smart, this points to
|
* If transport is at least potentially smart, this points to
|
||||||
@ -120,7 +125,8 @@ struct transport *transport_get(struct remote *, const char *);
|
|||||||
**/
|
**/
|
||||||
int transport_set_option(struct transport *transport, const char *name,
|
int transport_set_option(struct transport *transport, const char *name,
|
||||||
const char *value);
|
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 transport_push(struct transport *connection,
|
||||||
int refspec_nr, const char **refspec, int flags,
|
int refspec_nr, const char **refspec, int flags,
|
||||||
|
Loading…
Reference in New Issue
Block a user