Make git-{pull,rebase} message without tracking information friendlier
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>
This commit is contained in:
parent
222433ee4b
commit
3c02396adc
@ -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
|
||||
|
||||
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>
|
||||
$example
|
||||
|
||||
See git-config(1) for details."
|
||||
If you wish to set tracking information for this branch you can do so with:
|
||||
|
||||
git branch --set-upstream ${branch_name#refs/heads/} $remote/<branch>
|
||||
"
|
||||
fi
|
||||
exit 1
|
||||
}
|
||||
|
@ -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."
|
||||
|
@ -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"
|
||||
|
@ -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' '
|
||||
|
Loading…
Reference in New Issue
Block a user