Code

Make git-{pull,rebase} message without tracking information friendlier
authorCarlos Martín Nieto <cmn@elego.de>
Sun, 4 Mar 2012 04:41:26 +0000 (05:41 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 5 Mar 2012 07:00:57 +0000 (23:00 -0800)
The current message is too long and at too low a level for anybody
to understand it if they don't know about the configuration format
already.

The text about setting up a remote is superfluous and doesn't help
understand or recover from the error that has happened.  Show the
usage more prominently and explain how to set up the tracking
information. If there is only one remote, that name is used instead
of the generic <remote>.

Also simplify the message we print on detached HEAD to remove
unnecessary information which is better left for the documentation.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-parse-remote.sh
git-pull.sh
git-rebase.sh
t/t3400-rebase.sh

index b24119d69c092e3bd345cff1b6bafd48f5fd1e1b..484b2e61ccd6df166a8d6447556ccca4236840ad 100644 (file)
@@ -57,34 +57,31 @@ error_on_missing_default_upstream () {
        op_prep="$3"
        example="$4"
        branch_name=$(git symbolic-ref -q HEAD)
+       # If there's only one remote, use that in the suggestion
+       remote="<remote>"
+       if test $(git remote | wc -l) = 1
+       then
+               remote=$(git remote)
+       fi
+
        if test -z "$branch_name"
        then
-               echo "You are not currently on a branch, so I cannot use any
-'branch.<branchname>.merge' in your configuration file.
-Please specify which branch you want to $op_type $op_prep on the command
-line and try again (e.g. '$example').
-See git-${cmd}(1) for details."
+               echo "You are not currently on a branch. Please specify which
+branch you want to $op_type $op_prep. See git-${cmd}(1) for details.
+
+    $example
+"
        else
-               echo "You asked me to $cmd without telling me which branch you
-want to $op_type $op_prep, and 'branch.${branch_name#refs/heads/}.merge' in
-your configuration file does not tell me, either. Please
-specify which branch you want to use on the command line and
-try again (e.g. '$example').
-See git-${cmd}(1) for details.
+               echo "There is no tracking information for the current branch.
+Please specify which branch you want to $op_type $op_prep.
+See git-${cmd}(1) for details
+
+    $example
 
-If you often $op_type $op_prep the same branch, you may want to
-use something like the following in your configuration file:
-    [branch \"${branch_name#refs/heads/}\"]
-    remote = <nickname>
-    merge = <remote-ref>"
-               test rebase = "$op_type" &&
-               echo "    rebase = true"
-               echo "
-    [remote \"<nickname>\"]
-    url = <url>
-    fetch = <refspec>
+If you wish to set tracking information for this branch you can do so with:
 
-See git-config(1) for details."
+    git branch --set-upstream ${branch_name#refs/heads/} $remote/<branch>
+"
        fi
        exit 1
 }
index 434c139f077ed5b03fef2b70f2eabb66f7147f23..2a10047eb710011213024bd0acc57eec87a6f965 100755 (executable)
@@ -180,7 +180,7 @@ error_on_no_merge_candidates () {
        elif [ -z "$curr_branch" -o -z "$upstream" ]; then
                . git-parse-remote
                error_on_missing_default_upstream "pull" $op_type $op_prep \
-                       "git pull <repository> <refspec>"
+                       "git pull <remote> <branch>"
        else
                echo "Your configuration specifies to $op_type $op_prep the ref '${upstream#refs/heads/}'"
                echo "from the remote, but no such ref was fetched."
index 00ca7b99fef35e21d24af844e6dbaa92cab5834f..69c1374823084804662dbd6b6d510ec2ec3428e9 100755 (executable)
@@ -380,7 +380,7 @@ then
                then
                        . git-parse-remote
                        error_on_missing_default_upstream "rebase" "rebase" \
-                               "against" "git rebase <upstream branch>"
+                               "against" "git rebase <branch>"
                fi
                ;;
        *)      upstream_name="$1"
index e647272a01f3ac89e1d08e6b1ffa36a3a543e655..7788ae02adca18ab1d1f8cf7b76243fbf56377ae 100755 (executable)
@@ -160,14 +160,12 @@ rm -f B
 
 test_expect_success 'fail when upstream arg is missing and not on branch' '
        git checkout topic &&
-       test_must_fail git rebase >output.out &&
-       grep "You are not currently on a branch" output.out
+       test_must_fail git rebase
 '
 
 test_expect_success 'fail when upstream arg is missing and not configured' '
        git checkout -b no-config topic &&
-       test_must_fail git rebase >output.out &&
-       grep "branch.no-config.merge" output.out
+       test_must_fail git rebase
 '
 
 test_expect_success 'default to @{upstream} when upstream arg is missing' '