aboutsummaryrefslogtreecommitdiffstats
path: root/git-fetch-script
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@ppc970.osdl.org>2005-05-22 11:03:24 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-05-22 11:03:24 -0700
commit7ef76925d9c19ef74874e1735e2436e56d0c4897 (patch)
tree0f31a7ea7b6e6b37e7e25d1fdb843172ef246b84 /git-fetch-script
parent6b14d7faf0bad026a81a27bac07b47691f621b8f (diff)
downloadgit-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-xgit-fetch-script41
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)"