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.
maint
Linus Torvalds 2005-05-22 11:03:24 -07:00
parent 6b14d7faf0
commit 7ef76925d9
3 changed files with 43 additions and 34 deletions

View File

@ -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-cache git-diff-files git-init-db git-write-tree \
git-read-tree git-commit-tree git-cat-file git-fsck-cache \

41
git-fetch-script Executable file
View File

@ -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)"

View File

@ -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)" \