Skip to content

Commit

Permalink
Implement git clone -v
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Miklos Vajna authored and Shawn O. Pearce committed Oct 9, 2008
1 parent 23abd3f commit 21188b1
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 1 deletion.
5 changes: 5 additions & 0 deletions Documentation/git-clone.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
4 changes: 4 additions & 0 deletions builtin-clone.c
Original file line number Diff line number Diff line change
Expand Up @@ -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"),
Expand Down Expand Up @@ -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,
Expand Down
13 changes: 13 additions & 0 deletions t/t5702-clone-options.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion transport.c
Original file line number Diff line number Diff line change
Expand Up @@ -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++)
Expand Down
2 changes: 2 additions & 0 deletions transport.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 21188b1

Please sign in to comment.