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 <[EMAIL PROTECTED]>

---

 Makefile             |    2 +
 git-ls-remote-script |    4 +--
 git-parse-remote     |   79 --------------------------------------------------
 git-pull-script      |   14 ++++++---
 4 files changed, 12 insertions(+), 87 deletions(-)
 delete mode 100755 git-parse-remote

07c44b628e605c4e7fead8ff9e191711b7abe301
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -64,7 +64,7 @@ SCRIPTS=git git-apply-patch-script git-m
        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
 
diff --git a/git-ls-remote-script b/git-ls-remote-script
--- a/git-ls-remote-script
+++ b/git-ls-remote-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-$$
diff --git a/git-parse-remote b/git-parse-remote
deleted file mode 100755
--- a/git-parse-remote
+++ /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
diff --git a/git-pull-script b/git-pull-script
--- a/git-pull-script
+++ b/git-pull-script
@@ -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"

-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to