зеркало из https://github.com/microsoft/git.git
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:
Родитель
6b14d7faf0
Коммит
7ef76925d9
2
Makefile
2
Makefile
|
@ -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 \
|
||||
|
|
|
@ -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)" \
|
||||
|
|
Загрузка…
Ссылка в новой задаче