Skip to content

Commit

Permalink
Make git-{pull,rebase} message without tracking information friendlier
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
carlosmn authored and gitster committed Mar 5, 2012
1 parent 222433e commit 3c02396
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 29 deletions.
43 changes: 20 additions & 23 deletions git-parse-remote.sh
Expand Up @@ -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
}
2 changes: 1 addition & 1 deletion git-pull.sh
Expand Up @@ -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."
Expand Down
2 changes: 1 addition & 1 deletion git-rebase.sh
Expand Up @@ -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"
Expand Down
6 changes: 2 additions & 4 deletions t/t3400-rebase.sh
Expand Up @@ -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' '
Expand Down

0 comments on commit 3c02396

Please sign in to comment.