[PATCH] Retire git-parse-remote.

Update git-pull to match updated git-fetch and allow pull to
fetch from multiple remote references.  There is no support for
resolving more than two heads, which will be done with "git
octopus".

Update "git ls-remote" to use git-parse-remote-script.

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano 2005-08-20 02:57:26 -07:00
Родитель 853a3697dc
Коммит e0bfc81e05
4 изменённых файлов: 12 добавлений и 87 удалений

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

@ -64,7 +64,7 @@ SCRIPTS=git git-apply-patch-script git-merge-one-file-script git-prune-script \
git-reset-script git-add-script git-checkout-script git-clone-script \
gitk git-cherry git-rebase-script git-relink-script git-repack-script \
git-format-patch-script git-sh-setup-script git-push-script \
git-branch-script git-parse-remote git-parse-remote-script git-verify-tag-script \
git-branch-script git-parse-remote-script git-verify-tag-script \
git-ls-remote-script git-clone-dumb-http git-rename-script \
git-request-pull-script git-bisect-script

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

@ -29,8 +29,8 @@ case ",$heads,$tags," in
,,,) heads=heads tags=tags other=other ;;
esac
. git-parse-remote "$1"
peek_repo="$_remote_repo"
. git-parse-remote-script
peek_repo="$(get_remote_url "$@")"
shift
tmp=.ls-remote-$$

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

@ -1,79 +0,0 @@
: To be included in git-pull and git-fetch scripts.
# A remote repository can be specified on the command line
# in one of the following formats:
#
# <repo>
# <repo> <head>
# <repo> tag <tag>
#
# where <repo> could be one of:
#
# a URL (including absolute or local pathname)
# a short-hand
# a short-hand followed by a trailing path
#
# A short-hand <name> has a corresponding file $GIT_DIR/branches/<name>,
# whose contents is a URL, possibly followed by a URL fragment #<head>
# to name the default branch on the remote side to fetch from.
_remote_repo= _remote_store= _remote_head= _remote_name=
case "$1" in
*:* | /* | ../* | ./* )
_remote_repo="$1"
;;
* )
# otherwise, it is a short hand.
case "$1" in
*/*)
# a short-hand followed by a trailing path
_token=$(expr "$1" : '\([^/]*\)/')
_rest=$(expr "$1" : '[^/]*\(/.*\)$')
;;
*)
_token="$1"
_rest=
_remote_store="refs/heads/$_token"
;;
esac
test -f "$GIT_DIR/branches/$_token" ||
die "No such remote branch: $_token"
_remote_repo=$(cat "$GIT_DIR/branches/$_token")"$_rest"
;;
esac
case "$_remote_repo" in
*"#"*)
_remote_head=`expr "$_remote_repo" : '.*#\(.*\)$'`
_remote_repo=`expr "$_remote_repo" : '\(.*\)#'`
;;
esac
_remote_name=$(echo "$_remote_repo" | sed 's|\.git/*$||')
case "$2" in
tag)
_remote_name="tag '$3' of $_remote_name"
_remote_head="refs/tags/$3"
_remote_store="$_remote_head"
;;
?*)
# command line specified a head explicitly; do not
# store the fetched head as a branch head.
_remote_name="head '$2' of $_remote_name"
_remote_head="refs/heads/$2"
_remote_store=''
;;
'')
case "$_remote_head" in
'')
_remote_head=HEAD ;;
*)
_remote_name="head '$_remote_head' of $_remote_name"
_remote_head="refs/heads/$_remote_head"
;;
esac
;;
esac

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

@ -1,12 +1,16 @@
#!/bin/sh
#
. git-sh-setup-script || die "Not a git archive"
. git-parse-remote "$@"
merge_name="$_remote_name"
git-fetch-script "$@" || exit 1
merge_head=$(sed -e 's/ .*//' "$GIT_DIR"/FETCH_HEAD | tr '\012' ' ')
merge_name=$(sed -e 's/^[0-9a-f]* //' "$GIT_DIR"/FETCH_HEAD |
tr '\012' ' ')
case "$merge_head" in
'' | *' '?*) die "Cannot resolve multiple heads at the same time (yet)." ;;
esac
git-resolve-script \
"$(cat "$GIT_DIR"/HEAD)" \
"$(cat "$GIT_DIR"/FETCH_HEAD)" \
"Merge $merge_name"
$merge_head "Merge $merge_name"