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.
This commit is contained in:
Linus Torvalds 2005-05-22 11:03:24 -07:00
Родитель 6b14d7faf0
Коммит 7ef76925d9
3 изменённых файлов: 43 добавлений и 34 удалений

Просмотреть файл

@ -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
Просмотреть файл

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

Просмотреть файл

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