|  | diff a/Makefile b/Makefile | 
|  | --- a/Makefile | 
|  | +++ b/Makefile | 
|  | @@ -20,7 +20,7 @@ INSTALL=install | 
|  |  | 
|  | SCRIPTS=git-apply-patch-script git-merge-one-file-script git-prune-script \ | 
|  | git-pull-script git-tag-script git-resolve-script git-whatchanged \ | 
|  | -	git-deltafy-script | 
|  | +	git-deltafy-script git-fetch-script | 
|  |  | 
|  | PROG=   git-update-index git-diff-files git-init-db git-write-tree \ | 
|  | git-read-tree git-commit-tree git-cat-file git-fsck-cache \ | 
|  | diff a/git-fetch-script b/git-fetch-script | 
|  | --- /dev/null | 
|  | +++ b/git-fetch-script | 
|  | @@ -0,0 +1,41 @@ | 
|  | +#!/bin/sh | 
|  | +# | 
|  | +merge_repo=$1 | 
|  | +merge_name=${2:-HEAD} | 
|  | + | 
|  | +: ${GIT_DIR=.git} | 
|  | +: ${GIT_OBJECT_DIRECTORY="${SHA1_FILE_DIRECTORY-"$GIT_DIR/objects"}"} | 
|  | + | 
|  | +download_one () { | 
|  | +	# remote_path="$1" local_file="$2" | 
|  | +	case "$1" in | 
|  | +	http://*) | 
|  | +		wget -q -O "$2" "$1" ;; | 
|  | +	/*) | 
|  | +		test -f "$1" && cat >"$2" "$1" ;; | 
|  | +	*) | 
|  | +		rsync -L "$1" "$2" ;; | 
|  | +	esac | 
|  | +} | 
|  | + | 
|  | +download_objects () { | 
|  | +	# remote_repo="$1" head_sha1="$2" | 
|  | +	case "$1" in | 
|  | +	http://*) | 
|  | +		git-http-pull -a "$2" "$1/" | 
|  | +		;; | 
|  | +	/*) | 
|  | +		git-local-pull -l -a "$2" "$1/" | 
|  | +		;; | 
|  | +	*) | 
|  | +		rsync -avz --ignore-existing \ | 
|  | +			"$1/objects/." "$GIT_OBJECT_DIRECTORY"/. | 
|  | +		;; | 
|  | +	esac | 
|  | +} | 
|  | + | 
|  | +echo "Getting remote $merge_name" | 
|  | +download_one "$merge_repo/$merge_name" "$GIT_DIR"/MERGE_HEAD | 
|  | + | 
|  | +echo "Getting object database" | 
|  | +download_objects "$merge_repo" "$(cat "$GIT_DIR"/MERGE_HEAD)" | 
|  | diff a/git-pull-script b/git-pull-script | 
|  | --- a/git-pull-script | 
|  | +++ b/git-pull-script | 
|  | @@ -6,39 +6,7 @@ merge_name=${2:-HEAD} | 
|  | : ${GIT_DIR=.git} | 
|  | : ${GIT_OBJECT_DIRECTORY="${SHA1_FILE_DIRECTORY-"$GIT_DIR/objects"}"} | 
|  |  | 
|  | -download_one () { | 
|  | -	# remote_path="$1" local_file="$2" | 
|  | -	case "$1" in | 
|  | -	http://*) | 
|  | -		wget -q -O "$2" "$1" ;; | 
|  | -	/*) | 
|  | -		test -f "$1" && cat >"$2" "$1" ;; | 
|  | -	*) | 
|  | -		rsync -L "$1" "$2" ;; | 
|  | -	esac | 
|  | -} | 
|  | - | 
|  | -download_objects () { | 
|  | -	# remote_repo="$1" head_sha1="$2" | 
|  | -	case "$1" in | 
|  | -	http://*) | 
|  | -		git-http-pull -a "$2" "$1/" | 
|  | -		;; | 
|  | -	/*) | 
|  | -		git-local-pull -l -a "$2" "$1/" | 
|  | -		;; | 
|  | -	*) | 
|  | -		rsync -avz --ignore-existing \ | 
|  | -			"$1/objects/." "$GIT_OBJECT_DIRECTORY"/. | 
|  | -		;; | 
|  | -	esac | 
|  | -} | 
|  | - | 
|  | -echo "Getting remote $merge_name" | 
|  | -download_one "$merge_repo/$merge_name" "$GIT_DIR"/MERGE_HEAD | 
|  | - | 
|  | -echo "Getting object database" | 
|  | -download_objects "$merge_repo" "$(cat "$GIT_DIR"/MERGE_HEAD)" | 
|  | +git-fetch-script "$merge_repo" "$merge_name" | 
|  |  | 
|  | git-resolve-script \ | 
|  | "$(cat "$GIT_DIR"/HEAD)" \ |