pull: clarify advice for the unconfigured error case
When pull --rebase fails because it cannot find what branch to merge against, the error message implies we are trying to merge. Say "rebase against" instead of "merge with" to avoid confusion. The configuration suggested to remedy the situation uses a confusing syntax, with variables specified in the dotted form accepted by 'git config' but separated from their values by the '=' delimiter used by config files. Since the user will have to edit this output anyway, it is more helpful to provide a config file snippet to paste into an editor and modify. Signed-off-by: Jan Krüger <jk@jk.gs> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
ce9d823b91
commit
995fc2f7e1
48
git-pull.sh
48
git-pull.sh
@ -88,45 +88,63 @@ error_on_no_merge_candidates () {
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if test true = "$rebase"
|
||||||
|
then
|
||||||
|
op_type=rebase
|
||||||
|
op_prep=against
|
||||||
|
else
|
||||||
|
op_type=merge
|
||||||
|
op_prep=with
|
||||||
|
fi
|
||||||
|
|
||||||
curr_branch=${curr_branch#refs/heads/}
|
curr_branch=${curr_branch#refs/heads/}
|
||||||
upstream=$(git config "branch.$curr_branch.merge")
|
upstream=$(git config "branch.$curr_branch.merge")
|
||||||
remote=$(git config "branch.$curr_branch.remote")
|
remote=$(git config "branch.$curr_branch.remote")
|
||||||
|
|
||||||
if [ $# -gt 1 ]; then
|
if [ $# -gt 1 ]; then
|
||||||
echo "There are no candidates for merging in the refs that you just fetched."
|
if [ "$rebase" = true ]; then
|
||||||
|
printf "There is no candidate for rebasing against "
|
||||||
|
else
|
||||||
|
printf "There are no candidates for merging "
|
||||||
|
fi
|
||||||
|
echo "among the refs that you just fetched."
|
||||||
echo "Generally this means that you provided a wildcard refspec which had no"
|
echo "Generally this means that you provided a wildcard refspec which had no"
|
||||||
echo "matches on the remote end."
|
echo "matches on the remote end."
|
||||||
elif [ $# -gt 0 ] && [ "$1" != "$remote" ]; then
|
elif [ $# -gt 0 ] && [ "$1" != "$remote" ]; then
|
||||||
echo "You asked to pull from the remote '$1', but did not specify"
|
echo "You asked to pull from the remote '$1', but did not specify"
|
||||||
echo "a branch to merge. Because this is not the default configured remote"
|
echo "a branch. Because this is not the default configured remote"
|
||||||
echo "for your current branch, you must specify a branch on the command line."
|
echo "for your current branch, you must specify a branch on the command line."
|
||||||
elif [ -z "$curr_branch" ]; then
|
elif [ -z "$curr_branch" ]; then
|
||||||
echo "You are not currently on a branch, so I cannot use any"
|
echo "You are not currently on a branch, so I cannot use any"
|
||||||
echo "'branch.<branchname>.merge' in your configuration file."
|
echo "'branch.<branchname>.merge' in your configuration file."
|
||||||
echo "Please specify which branch you want to merge on the command"
|
echo "Please specify which remote branch you want to use on the command"
|
||||||
echo "line and try again (e.g. 'git pull <repository> <refspec>')."
|
echo "line and try again (e.g. 'git pull <repository> <refspec>')."
|
||||||
echo "See git-pull(1) for details."
|
echo "See git-pull(1) for details."
|
||||||
elif [ -z "$upstream" ]; then
|
elif [ -z "$upstream" ]; then
|
||||||
echo "You asked me to pull without telling me which branch you"
|
echo "You asked me to pull without telling me which branch you"
|
||||||
echo "want to merge with, and 'branch.${curr_branch}.merge' in"
|
echo "want to $op_type $op_prep, and 'branch.${curr_branch}.merge' in"
|
||||||
echo "your configuration file does not tell me either. Please"
|
echo "your configuration file does not tell me, either. Please"
|
||||||
echo "specify which branch you want to merge on the command line and"
|
echo "specify which branch you want to use on the command line and"
|
||||||
echo "try again (e.g. 'git pull <repository> <refspec>')."
|
echo "try again (e.g. 'git pull <repository> <refspec>')."
|
||||||
echo "See git-pull(1) for details."
|
echo "See git-pull(1) for details."
|
||||||
echo
|
echo
|
||||||
echo "If you often merge with the same branch, you may want to"
|
echo "If you often $op_type $op_prep the same branch, you may want to"
|
||||||
echo "configure the following variables in your configuration"
|
echo "use something like the following in your configuration file:"
|
||||||
echo "file:"
|
|
||||||
echo
|
echo
|
||||||
echo " branch.${curr_branch}.remote = <nickname>"
|
echo " [branch \"${curr_branch}\"]"
|
||||||
echo " branch.${curr_branch}.merge = <remote-ref>"
|
echo " remote = <nickname>"
|
||||||
echo " remote.<nickname>.url = <url>"
|
echo " merge = <remote-ref>"
|
||||||
echo " remote.<nickname>.fetch = <refspec>"
|
test rebase = "$op_type" &&
|
||||||
|
echo " rebase = true"
|
||||||
|
echo
|
||||||
|
echo " [remote \"<nickname>\"]"
|
||||||
|
echo " url = <url>"
|
||||||
|
echo " fetch = <refspec>"
|
||||||
echo
|
echo
|
||||||
echo "See git-config(1) for details."
|
echo "See git-config(1) for details."
|
||||||
else
|
else
|
||||||
echo "Your configuration specifies to merge the ref '${upstream#refs/heads/}' from the"
|
echo "Your configuration specifies to $op_type $op_prep the ref '${upstream#refs/heads/}'"
|
||||||
echo "remote, but no such ref was fetched."
|
echo "from the remote, but no such ref was fetched."
|
||||||
fi
|
fi
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user