Junio C Hamano schrieb: > Jeff King <peff@xxxxxxxx> writes: >> I think it is enough for git-pull to just check whether the config >> exists, and if so, guess that the ref was simply not fetched. IOW, >> this: > > Thanks. > > I saw some discussion on improving the wording. Here is what I plan to > commit. > > diff --git a/git-pull.sh b/git-pull.sh > index 0bbd5bf..2c2fa79 100755 > --- a/git-pull.sh > +++ b/git-pull.sh > @@ -89,6 +89,8 @@ error_on_no_merge_candidates () { > done > > curr_branch=${curr_branch#refs/heads/} > + upstream=$(git config "branch.$curr_branch.merge" || > + git config "branch.$curr_branch.rebase") > > if [ -z "$curr_branch" ]; then > echo "You are not currently on a branch, so I cannot use any" > @@ -96,7 +98,7 @@ error_on_no_merge_candidates () { > echo "Please specify which branch you want to merge on the command" > echo "line and try again (e.g. 'git pull <repository> <refspec>')." > echo "See git-pull(1) for details." > - else > + elif [ -z "$upstream" ]; then > echo "You asked me to pull without telling me which branch you" > echo "want to merge with, and 'branch.${curr_branch}.merge' in" > echo "your configuration file does not tell me either. Please" > @@ -114,6 +116,10 @@ error_on_no_merge_candidates () { > echo " remote.<nickname>.fetch = <refspec>" > echo > echo "See git-config(1) for details." > + else > + echo "Your configuration specifies to merge the ref" > + echo "'${upstream#refs/heads/}' from the remote, but no such ref" > + echo "was fetched." > fi > exit 1 > } Unfortunately, this is not water-tight. See what I just observed: $ git pull hk From /exports/repos/hk/viscovery 9455552..6429037 master -> hk/master Your configuration specifies to merge the ref 'master' from the remote, but no such ref was fetched. The message is confusing when it says "'master' was not fetched" when clearly master _was_ fetched. More importantly, the message is wrong to say that "Your configuration specifies to merge the ref 'master' from the remote", because I have this configuration: $ git config -l | egrep '^(remote|branch)' remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* remote.origin.url=/exports/repos/js/viscovery branch.master.remote=origin branch.master.merge=refs/heads/master remote.hk.url=/exports/repos/hk/viscovery remote.hk.fetch=+refs/heads/*:refs/remotes/hk/* i.e. while on master, I merge master from "origin", not from "hk". -- Hannes -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html