Daniel Barkalow <barkalow@xxxxxxxxxxxx> writes: > On the other hand, the command that's difficult with (1) is "get all of > the latest tags, but not even the default other refs", and I don't think > that's something that people actually want to do in general, so it should > be fine to go with (1). I agree. "Behave as if no --tags was given (so an explicit refspec on the command line overrides configured ones, or no explicit refspecs on the command line takes configured ones), but do not auto-follow tags and fetch all tags as not-for-merge entries" would be the most sensible semantics for the option, as you say. >> This is a bit more involved change than I would want to have >> during -rc freeze. > > Certainly. I think, though, that the OP's patch, plus a check that --tags > was given on the command line in the first place, would be worthwhile. Sounds sensible. --- git-pull.sh | 66 +++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 40 insertions(+), 26 deletions(-) diff --git a/git-pull.sh b/git-pull.sh index 698e82b..fa97b0f 100755 --- a/git-pull.sh +++ b/git-pull.sh @@ -72,6 +72,40 @@ do shift done +error_on_no_merge_candidates () { + exec >&2 + for opt + do + case "$opt" in + -t|--t|--ta|--tag|--tags) + echo "Fetching tags only, you probably meant:" + echo " git fetch --tags" + exit 1 + esac + done + + curr_branch=${curr_branch#refs/heads/} + + 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" + echo "name which branch you want to merge on the command line and" + echo "try again (e.g. 'git pull <repository> <refspec>')." + echo "See git-pull(1) for details on the refspec." + echo + echo "If you often merge with the same branch, you may want to" + echo "configure the following variables in your configuration" + echo "file:" + echo + echo " branch.${curr_branch}.remote = <nickname>" + echo " branch.${curr_branch}.merge = <remote-ref>" + echo " remote.<nickname>.url = <url>" + echo " remote.<nickname>.fetch = <refspec>" + echo + echo "See git-config(1) for details." + exit 1 +} + orig_head=$(git rev-parse --verify HEAD 2>/dev/null) git-fetch --update-head-ok "$@" || exit 1 @@ -105,33 +139,13 @@ merge_head=$(sed -e '/ not-for-merge /d' \ case "$merge_head" in '') case $? in - 0) ;; - 1) echo >&2 "You are not currently on a branch; you must explicitly" - echo >&2 "specify which branch you wish to merge:" - echo >&2 " git pull <remote> <branch>" - exit 1;; - *) exit $?;; + 0) error_on_no_merge_candidates "$@";; + 1) echo >&2 "You are not currently on a branch; you must explicitly" + echo >&2 "specify which branch you wish to merge:" + echo >&2 " git pull <remote> <branch>" + exit 1;; + *) exit $?;; esac - curr_branch=${curr_branch#refs/heads/} - - echo >&2 "You asked me to pull without telling me which branch you" - echo >&2 "want to merge with, and 'branch.${curr_branch}.merge' in" - echo >&2 "your configuration file does not tell me either. Please" - echo >&2 "name which branch you want to merge on the command line and" - echo >&2 "try again (e.g. 'git pull <repository> <refspec>')." - echo >&2 "See git-pull(1) for details on the refspec." - echo >&2 - echo >&2 "If you often merge with the same branch, you may want to" - echo >&2 "configure the following variables in your configuration" - echo >&2 "file:" - echo >&2 - echo >&2 " branch.${curr_branch}.remote = <nickname>" - echo >&2 " branch.${curr_branch}.merge = <remote-ref>" - echo >&2 " remote.<nickname>.url = <url>" - echo >&2 " remote.<nickname>.fetch = <refspec>" - echo >&2 - echo >&2 "See git-config(1) for details." - exit 1 ;; ?*' '?*) if test -z "$orig_head" - 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