fetch & clone: do not output progress when not on a tty

This adds the option "--no-progress" to fetch-pack and upload-pack,
and makes fetch and clone pass this option when stdout is not a tty.

While at documenting that option, also document --strict and --timeout
options for upload-pack.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
maint
Johannes Schindelin 2007-02-20 03:01:44 +01:00 committed by Junio C Hamano
parent 437b1b20df
commit 83a5ad6126
6 changed files with 55 additions and 13 deletions

View File

@ -8,7 +8,7 @@ git-fetch-pack - Receive missing objects from another repository


SYNOPSIS SYNOPSIS
-------- --------
'git-fetch-pack' [--all] [--quiet|-q] [--keep|-k] [--thin] [--upload-pack=<git-upload-pack>] [--depth=<n>] [-v] [<host>:]<directory> [<refs>...] 'git-fetch-pack' [--all] [--quiet|-q] [--keep|-k] [--thin] [--upload-pack=<git-upload-pack>] [--depth=<n>] [--no-progress] [-v] [<host>:]<directory> [<refs>...]


DESCRIPTION DESCRIPTION
----------- -----------
@ -63,6 +63,9 @@ OPTIONS
\--depth=<n>:: \--depth=<n>::
Limit fetching to ancestor-chains not longer than n. Limit fetching to ancestor-chains not longer than n.


\--no-progress::
Do not show the progress.

\-v:: \-v::
Run verbosely. Run verbosely.



View File

@ -8,7 +8,7 @@ git-upload-pack - Send objects packed back to git-fetch-pack


SYNOPSIS SYNOPSIS
-------- --------
'git-upload-pack' <directory> 'git-upload-pack' [--strict] [--timeout=<n>] [--no-progress] <directory>


DESCRIPTION DESCRIPTION
----------- -----------
@ -23,6 +23,16 @@ repository. For push operations, see 'git-send-pack'.


OPTIONS OPTIONS
------- -------

\--strict::
Do not try <directory>/.git/ if <directory> is no git directory.

\--timeout=<n>::
Interrupt transfer after <n> seconds of inactivity.

\--no-progress::
Do not show the progress.

<directory>:: <directory>::
The repository to sync from. The repository to sync from.



View File

@ -15,8 +15,9 @@ static int quiet;
static int verbose; static int verbose;
static int fetch_all; static int fetch_all;
static int depth; static int depth;
static int no_progress;
static const char fetch_pack_usage[] = static const char fetch_pack_usage[] =
"git-fetch-pack [--all] [--quiet|-q] [--keep|-k] [--thin] [--upload-pack=<git-upload-pack>] [--depth=<n>] [-v] [<host>:]<directory> [<refs>...]"; "git-fetch-pack [--all] [--quiet|-q] [--keep|-k] [--thin] [--upload-pack=<git-upload-pack>] [--depth=<n>] [--no-progress] [-v] [<host>:]<directory> [<refs>...]";
static const char *uploadpack = "git-upload-pack"; static const char *uploadpack = "git-upload-pack";


#define COMPLETE (1U << 0) #define COMPLETE (1U << 0)
@ -521,7 +522,7 @@ static int get_pack(int xd[2])
if (do_keep) { if (do_keep) {
*av++ = "index-pack"; *av++ = "index-pack";
*av++ = "--stdin"; *av++ = "--stdin";
if (!quiet) if (!quiet && !no_progress)
*av++ = "-v"; *av++ = "-v";
if (use_thin_pack) if (use_thin_pack)
*av++ = "--fix-thin"; *av++ = "--fix-thin";
@ -718,6 +719,10 @@ int main(int argc, char **argv)
st.st_mtime = 0; st.st_mtime = 0;
continue; continue;
} }
if (!strcmp("--no-progress", arg)) {
no_progress = 1;
continue;
}
usage(fetch_pack_usage); usage(fetch_pack_usage);
} }
dest = arg; dest = arg;
@ -727,7 +732,12 @@ int main(int argc, char **argv)
} }
if (!dest) if (!dest)
usage(fetch_pack_usage); usage(fetch_pack_usage);
pid = git_connect(fd, dest, uploadpack); if (no_progress) {
char buf[256];
snprintf(buf, sizeof(buf), "%s --no-progress", uploadpack);
pid = git_connect(fd, dest, buf);
} else
pid = git_connect(fd, dest, uploadpack);
if (pid < 0) if (pid < 0)
return 1; return 1;
if (heads && nr_heads) if (heads && nr_heads)

View File

@ -79,6 +79,8 @@ origin=
origin_override= origin_override=
use_separate_remote=t use_separate_remote=t
depth= depth=
no_progress=
test -t 1 || no_progress=--no-progress
while while
case "$#,$1" in case "$#,$1" in
0,*) break ;; 0,*) break ;;
@ -290,8 +292,8 @@ yes,yes)
;; ;;
*) *)
case "$upload_pack" in case "$upload_pack" in
'') git-fetch-pack --all -k $quiet $depth "$repo" ;; '') git-fetch-pack --all -k $quiet $depth $no_progress "$repo";;
*) git-fetch-pack --all -k $quiet "$upload_pack" $depth "$repo" ;; *) git-fetch-pack --all -k $quiet "$upload_pack" $depth $no_progress "$repo" ;;
esac >"$GIT_DIR/CLONE_HEAD" || esac >"$GIT_DIR/CLONE_HEAD" ||
die "fetch-pack from '$repo' failed." die "fetch-pack from '$repo' failed."
;; ;;

View File

@ -24,6 +24,8 @@ update_head_ok=
exec= exec=
keep= keep=
shallow_depth= shallow_depth=
no_progress=
test -t 1 || no_progress=--no-progress
while case "$#" in 0) break ;; esac while case "$#" in 0) break ;; esac
do do
case "$1" in case "$1" in
@ -377,7 +379,8 @@ fetch_main () {
( : subshell because we muck with IFS ( : subshell because we muck with IFS
IFS=" $LF" IFS=" $LF"
( (
git-fetch-pack --thin $exec $keep $shallow_depth "$remote" $rref || git-fetch-pack --thin $exec $keep $shallow_depth $no_progress \
"$remote" $rref ||
echo failed "$remote" echo failed "$remote"
) | ) |
( (

View File

@ -10,7 +10,7 @@
#include "revision.h" #include "revision.h"
#include "list-objects.h" #include "list-objects.h"


static const char upload_pack_usage[] = "git-upload-pack [--strict] [--timeout=nn] <dir>"; static const char upload_pack_usage[] = "git-upload-pack [--strict] [--timeout=nn] [--no-progress] <dir>";


/* bits #0..7 in revision.h, #8..10 in commit.c */ /* bits #0..7 in revision.h, #8..10 in commit.c */
#define THEY_HAVE (1u << 11) #define THEY_HAVE (1u << 11)
@ -26,7 +26,7 @@ static const char upload_pack_usage[] = "git-upload-pack [--strict] [--timeout=n
static unsigned long oldest_have; static unsigned long oldest_have;


static int multi_ack, nr_our_refs; static int multi_ack, nr_our_refs;
static int use_thin_pack, use_ofs_delta; static int use_thin_pack, use_ofs_delta, no_progress;
static struct object_array have_obj; static struct object_array have_obj;
static struct object_array want_obj; static struct object_array want_obj;
static unsigned int timeout; static unsigned int timeout;
@ -164,6 +164,9 @@ static void create_pack_file(void)
die("git-upload-pack: unable to fork git-pack-objects"); die("git-upload-pack: unable to fork git-pack-objects");
} }
if (!pid_pack_objects) { if (!pid_pack_objects) {
const char *argv[10];
int i = 0;

dup2(lp_pipe[0], 0); dup2(lp_pipe[0], 0);
dup2(pu_pipe[1], 1); dup2(pu_pipe[1], 1);
dup2(pe_pipe[1], 2); dup2(pe_pipe[1], 2);
@ -174,9 +177,16 @@ static void create_pack_file(void)
close(pu_pipe[1]); close(pu_pipe[1]);
close(pe_pipe[0]); close(pe_pipe[0]);
close(pe_pipe[1]); close(pe_pipe[1]);
execl_git_cmd("pack-objects", "--stdout", "--progress",
use_ofs_delta ? "--delta-base-offset" : NULL, argv[i++] = "pack-objects";
NULL); argv[i++] = "--stdout";
if (!no_progress)
argv[i++] = "--progress";
if (use_ofs_delta)
argv[i++] = "--delta-base-offset";
argv[i++] = NULL;

execv_git_cmd(argv);
kill(pid_rev_list, SIGKILL); kill(pid_rev_list, SIGKILL);
die("git-upload-pack: unable to exec git-pack-objects"); die("git-upload-pack: unable to exec git-pack-objects");
} }
@ -660,6 +670,10 @@ int main(int argc, char **argv)
timeout = atoi(arg+10); timeout = atoi(arg+10);
continue; continue;
} }
if (!strcmp(arg, "--no-progress")) {
no_progress = 1;
continue;
}
if (!strcmp(arg, "--")) { if (!strcmp(arg, "--")) {
i++; i++;
break; break;