diff options
| -rw-r--r-- | Documentation/git-fetch-pack.txt | 5 | ||||
| -rw-r--r-- | Documentation/git-upload-pack.txt | 12 | ||||
| -rw-r--r-- | fetch-pack.c | 16 | ||||
| -rwxr-xr-x | git-clone.sh | 6 | ||||
| -rwxr-xr-x | git-fetch.sh | 5 | ||||
| -rw-r--r-- | upload-pack.c | 24 | 
6 files changed, 55 insertions, 13 deletions
| diff --git a/Documentation/git-fetch-pack.txt b/Documentation/git-fetch-pack.txt index 105d76b0ba..a99a5b321f 100644 --- a/Documentation/git-fetch-pack.txt +++ b/Documentation/git-fetch-pack.txt @@ -8,7 +8,7 @@ git-fetch-pack - Receive missing objects from another repository  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  ----------- @@ -63,6 +63,9 @@ OPTIONS  \--depth=<n>::  	Limit fetching to ancestor-chains not longer than n. +\--no-progress:: +	Do not show the progress. +  \-v::  	Run verbosely. diff --git a/Documentation/git-upload-pack.txt b/Documentation/git-upload-pack.txt index 9da062d5c9..c75c86ea79 100644 --- a/Documentation/git-upload-pack.txt +++ b/Documentation/git-upload-pack.txt @@ -8,7 +8,7 @@ git-upload-pack - Send objects packed back to git-fetch-pack  SYNOPSIS  -------- -'git-upload-pack' <directory> +'git-upload-pack' [--strict] [--timeout=<n>] [--no-progress] <directory>  DESCRIPTION  ----------- @@ -23,6 +23,16 @@ repository.  For push operations, see 'git-send-pack'.  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>::  	The repository to sync from. diff --git a/fetch-pack.c b/fetch-pack.c index c787106764..fc6b4e06b4 100644 --- a/fetch-pack.c +++ b/fetch-pack.c @@ -15,8 +15,9 @@ static int quiet;  static int verbose;  static int fetch_all;  static int depth; +static int no_progress;  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";  #define COMPLETE	(1U << 0) @@ -521,7 +522,7 @@ static int get_pack(int xd[2])  	if (do_keep) {  		*av++ = "index-pack";  		*av++ = "--stdin"; -		if (!quiet) +		if (!quiet && !no_progress)  			*av++ = "-v";  		if (use_thin_pack)  			*av++ = "--fix-thin"; @@ -718,6 +719,10 @@ int main(int argc, char **argv)  					st.st_mtime = 0;  				continue;  			} +			if (!strcmp("--no-progress", arg)) { +				no_progress = 1; +				continue; +			}  			usage(fetch_pack_usage);  		}  		dest = arg; @@ -727,7 +732,12 @@ int main(int argc, char **argv)  	}  	if (!dest)  		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)  		return 1;  	if (heads && nr_heads) diff --git a/git-clone.sh b/git-clone.sh index 1bd54ded3c..86890ea1f4 100755 --- a/git-clone.sh +++ b/git-clone.sh @@ -79,6 +79,8 @@ origin=  origin_override=  use_separate_remote=t  depth= +no_progress= +test -t 1 || no_progress=--no-progress  while  	case "$#,$1" in  	0,*) break ;; @@ -290,8 +292,8 @@ yes,yes)  		;;  	*)  		case "$upload_pack" in -		'') git-fetch-pack --all -k $quiet $depth "$repo" ;; -		*) git-fetch-pack --all -k $quiet "$upload_pack" $depth "$repo" ;; +		'') git-fetch-pack --all -k $quiet $depth $no_progress "$repo";; +		*) git-fetch-pack --all -k $quiet "$upload_pack" $depth $no_progress "$repo" ;;  		esac >"$GIT_DIR/CLONE_HEAD" ||  			die "fetch-pack from '$repo' failed."  		;; diff --git a/git-fetch.sh b/git-fetch.sh index ca984e739a..851ed6b646 100755 --- a/git-fetch.sh +++ b/git-fetch.sh @@ -24,6 +24,8 @@ update_head_ok=  exec=  keep=  shallow_depth= +no_progress= +test -t 1 || no_progress=--no-progress  while case "$#" in 0) break ;; esac  do  	case "$1" in @@ -377,7 +379,8 @@ fetch_main () {      ( : subshell because we muck with IFS        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"        ) |        ( diff --git a/upload-pack.c b/upload-pack.c index 3648aae1a7..d1be07fb9e 100644 --- a/upload-pack.c +++ b/upload-pack.c @@ -10,7 +10,7 @@  #include "revision.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 */  #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 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 want_obj;  static unsigned int timeout; @@ -164,6 +164,9 @@ static void create_pack_file(void)  		die("git-upload-pack: unable to fork git-pack-objects");  	}  	if (!pid_pack_objects) { +		const char *argv[10]; +		int i = 0; +  		dup2(lp_pipe[0], 0);  		dup2(pu_pipe[1], 1);  		dup2(pe_pipe[1], 2); @@ -174,9 +177,16 @@ static void create_pack_file(void)  		close(pu_pipe[1]);  		close(pe_pipe[0]);  		close(pe_pipe[1]); -		execl_git_cmd("pack-objects", "--stdout", "--progress", -			      use_ofs_delta ? "--delta-base-offset" : NULL, -			      NULL); + +		argv[i++] = "pack-objects"; +		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);  		die("git-upload-pack: unable to exec git-pack-objects");  	} @@ -660,6 +670,10 @@ int main(int argc, char **argv)  			timeout = atoi(arg+10);  			continue;  		} +		if (!strcmp(arg, "--no-progress")) { +			no_progress = 1; +			continue; +		}  		if (!strcmp(arg, "--")) {  			i++;  			break; | 
