diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-22 18:03:24 (GMT) |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-22 18:03:24 (GMT) |
commit | 7ef76925d9c19ef74874e1735e2436e56d0c4897 (patch) | |
tree | 0f31a7ea7b6e6b37e7e25d1fdb843172ef246b84 /git-fetch-script | |
parent | 6b14d7faf0bad026a81a27bac07b47691f621b8f (diff) | |
download | git-7ef76925d9c19ef74874e1735e2436e56d0c4897.zip git-7ef76925d9c19ef74874e1735e2436e56d0c4897.tar.gz git-7ef76925d9c19ef74874e1735e2436e56d0c4897.tar.bz2 |
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 0000000..17f22af --- /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)" |