Implement git clone -v
The new -v option forces the progressbar, even in case the output is not a terminal. This can be useful if the caller is an IDE or wrapper which wants to scrape the progressbar from stderr and show its information in a different format. Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
parent
23abd3f48c
commit
21188b1eaf
@ -90,6 +90,11 @@ then the cloned repository will become corrupt.
|
||||
Operate quietly. This flag is also passed to the `rsync'
|
||||
command when given.
|
||||
|
||||
--verbose::
|
||||
-v::
|
||||
Display the progressbar, even in case the standard output is not
|
||||
a terminal.
|
||||
|
||||
--no-checkout::
|
||||
-n::
|
||||
No checkout of HEAD is performed after the clone is complete.
|
||||
|
@ -38,9 +38,11 @@ static int option_local, option_no_hardlinks, option_shared;
|
||||
static char *option_template, *option_reference, *option_depth;
|
||||
static char *option_origin = NULL;
|
||||
static char *option_upload_pack = "git-upload-pack";
|
||||
static int option_verbose;
|
||||
|
||||
static struct option builtin_clone_options[] = {
|
||||
OPT__QUIET(&option_quiet),
|
||||
OPT__VERBOSE(&option_verbose),
|
||||
OPT_BOOLEAN('n', "no-checkout", &option_no_checkout,
|
||||
"don't create a checkout"),
|
||||
OPT_BOOLEAN(0, "bare", &option_bare, "create a bare repository"),
|
||||
@ -506,6 +508,8 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
|
||||
|
||||
if (option_quiet)
|
||||
transport->verbose = -1;
|
||||
else if (option_verbose)
|
||||
transport->progress = 1;
|
||||
|
||||
if (option_upload_pack)
|
||||
transport_set_option(transport, TRANS_OPT_UPLOADPACK,
|
||||
|
@ -19,4 +19,17 @@ test_expect_success 'clone -o' '
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'redirected clone' '
|
||||
|
||||
git clone "file://$(pwd)/parent" clone-redirected >out 2>err &&
|
||||
test ! -s err
|
||||
|
||||
'
|
||||
test_expect_success 'redirected clone -v' '
|
||||
|
||||
git clone -v "file://$(pwd)/parent" clone-redirected-v >out 2>err &&
|
||||
test -s err
|
||||
|
||||
'
|
||||
|
||||
test_done
|
||||
|
@ -644,7 +644,7 @@ static int fetch_refs_via_pack(struct transport *transport,
|
||||
args.include_tag = data->followtags;
|
||||
args.verbose = (transport->verbose > 0);
|
||||
args.quiet = (transport->verbose < 0);
|
||||
args.no_progress = args.quiet || !isatty(1);
|
||||
args.no_progress = args.quiet || (!transport->progress && !isatty(1));
|
||||
args.depth = data->depth;
|
||||
|
||||
for (i = 0; i < nr_heads; i++)
|
||||
|
@ -25,6 +25,8 @@ struct transport {
|
||||
int (*disconnect)(struct transport *connection);
|
||||
char *pack_lockfile;
|
||||
signed verbose : 2;
|
||||
/* Force progress even if the output is not a tty */
|
||||
unsigned progress : 1;
|
||||
};
|
||||
|
||||
#define TRANSPORT_PUSH_ALL 1
|
||||
|
Loading…
Reference in New Issue
Block a user