[PATCH] Retire git-parse-remote.
authorJunio C Hamano <junkio@cox.net>
Sat, 20 Aug 2005 09:57:26 +0000 (02:57 -0700)
committerJunio C Hamano <junkio@cox.net>
Wed, 24 Aug 2005 23:50:50 +0000 (16:50 -0700)
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>
Makefile
git-ls-remote-script
git-parse-remote [deleted file]
git-pull-script

index 752affe407e3c90459846b2bb06dd0686a9b028f..267de67fd71c71d020c12e06452fa1270e3ba5cf 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -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
 
index 75f60278669851d627a9ff2f8e87c9382af72c6a..061a23135cee6a41ff23022672841d6061d52fd8 100755 (executable)
@@ -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-$$
diff --git a/git-parse-remote b/git-parse-remote
deleted file mode 100755 (executable)
index 53c5842..0000000
+++ /dev/null
@@ -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
index fc463260bd9dd07e50494e7cbb39ef6833179ff3..8608fcdebc1be7917de38740b3264edf5e0998ec 100755 (executable)
@@ -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"