i18n: unpack-trees: avoid substituting only a verb in sentences
[gitweb.git] / git-parse-remote.sh
old mode 100755 (executable)
new mode 100644 (file)
index 5f47b18..d3c3998
@@ -1,61 +1,14 @@
-#!/bin/sh
+# This is a shell library to calculate the remote repository and
+# upstream branch that should be pulled by "git pull" from the current
+# branch.
 
 # git-ls-remote could be called from outside a git managed repository;
 # this would fail in that case and would issue an error message.
 GIT_DIR=$(git rev-parse -q --git-dir) || :;
 
-get_data_source () {
-       case "$1" in
-       */*)
-               echo ''
-               ;;
-       .)
-               echo self
-               ;;
-       *)
-               if test "$(git config --get "remote.$1.url")"
-               then
-                       echo config
-               elif test -f "$GIT_DIR/remotes/$1"
-               then
-                       echo remotes
-               elif test -f "$GIT_DIR/branches/$1"
-               then
-                       echo branches
-               else
-                       echo ''
-               fi ;;
-       esac
-}
-
-get_remote_url () {
-       data_source=$(get_data_source "$1")
-       case "$data_source" in
-       '')
-               echo "$1"
-               ;;
-       self)
-               echo "$1"
-               ;;
-       config)
-               git config --get "remote.$1.url"
-               ;;
-       remotes)
-               sed -ne '/^URL: */{
-                       s///p
-                       q
-               }' "$GIT_DIR/remotes/$1"
-               ;;
-       branches)
-               sed -e 's/#.*//' "$GIT_DIR/branches/$1"
-               ;;
-       *)
-               die "internal error: get-remote-url $1" ;;
-       esac
-}
-
 get_default_remote () {
-       curr_branch=$(git symbolic-ref -q HEAD | sed -e 's|^refs/heads/||')
+       curr_branch=$(git symbolic-ref -q HEAD)
+       curr_branch="${curr_branch#refs/heads/}"
        origin=$(git config --get "branch.$curr_branch.remote")
        echo ${origin:-origin}
 }
@@ -66,7 +19,7 @@ get_remote_merge_branch () {
            origin="$1"
            default=$(get_default_remote)
            test -z "$origin" && origin=$default
-           curr_branch=$(git symbolic-ref -q HEAD)
+           curr_branch=$(git symbolic-ref -q HEAD) &&
            [ "$origin" = "$default" ] &&
            echo $(git for-each-ref --format='%(upstream)' $curr_branch)
            ;;
@@ -89,7 +42,60 @@ get_remote_merge_branch () {
            refs/heads/*) remote=${remote#refs/heads/} ;;
            refs/* | tags/* | remotes/* ) remote=
            esac
+           [ -n "$remote" ] && case "$repo" in
+               .)
+                   echo "refs/heads/$remote"
+                   ;;
+               *)
+                   echo "refs/remotes/$repo/$remote"
+                   ;;
+           esac
+       esac
+}
 
-           [ -n "$remote" ] && echo "refs/remotes/$repo/$remote"
+error_on_missing_default_upstream () {
+       cmd="$1"
+       op_type="$2"
+       op_prep="$3" # FIXME: op_prep is no longer used
+       example="$4"
+       branch_name=$(git symbolic-ref -q HEAD)
+       display_branch_name="${branch_name#refs/heads/}"
+       # If there's only one remote, use that in the suggestion
+       remote="$(gettext "<remote>")"
+       branch="$(gettext "<branch>")"
+       if test $(git remote | wc -l) = 1
+       then
+               remote=$(git remote)
+       fi
+
+       if test -z "$branch_name"
+       then
+               gettextln "You are not currently on a branch."
+       else
+               gettextln "There is no tracking information for the current branch."
+       fi
+       case "$op_type" in
+       rebase)
+               gettextln "Please specify which branch you want to rebase against."
+               ;;
+       merge)
+               gettextln "Please specify which branch you want to merge with."
+               ;;
+       *)
+               echo >&2 "BUG: unknown operation type: $op_type"
+               exit 1
+               ;;
        esac
+       eval_gettextln "See git-\${cmd}(1) for details."
+       echo
+       echo "    $example"
+       echo
+       if test -n "$branch_name"
+       then
+               gettextln "If you wish to set tracking information for this branch you can do so with:"
+               echo
+               echo "    git branch --set-upstream-to=$remote/$branch $display_branch_name"
+               echo
+       fi
+       exit 1
 }