diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-22 11:03:24 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-22 11:03:24 -0700 |
commit | 7ef76925d9c19ef74874e1735e2436e56d0c4897 (patch) | |
tree | 0f31a7ea7b6e6b37e7e25d1fdb843172ef246b84 /git-fetch-script | |
parent | 6b14d7faf0bad026a81a27bac07b47691f621b8f (diff) | |
download | git-7ef76925d9c19ef74874e1735e2436e56d0c4897.tar.gz |
Split up git-pull-script into separate "fetch" and "merge" phases.
This allows you to just fetch stuff first, inspect it, and then
resolve the merge separately if everything looks good.
Diffstat (limited to 'git-fetch-script')
-rwxr-xr-x | git-fetch-script | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/git-fetch-script b/git-fetch-script new file mode 100755 index 0000000000..17f22afedd --- /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)" |