41 lines
786 B
41 lines
786 B
#!/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 || exit 1 |
|
|
|
echo "Getting object database" |
|
download_objects "$merge_repo" "$(cat "$GIT_DIR"/MERGE_HEAD)" || exit 1
|
|
|