Jeff King <peff@xxxxxxxx> writes: > On Sun, Sep 13, 2009 at 01:38:48PM -0700, Junio C Hamano wrote: > >> I saw some discussion on improving the wording. Here is what I plan to >> commit. > > Thanks for picking this up, I meant to re-post with improvements. I am _not_ going to commit the following patch, because it will interfere with this clarification effort, but I think we want to do something along this line after the "clarification" settles. An observation I'd like to make is that this is way too ugly: [advice] pullNoMergeFound = false pushNonFastForward = false statusHints = false than [IKnowWhatIAmDoingThankYouVeryMuch] pullNoMergeFound pushNonFastForward statusHints but this feature is for people who know what they are doing, so I guess the current set-up would be fine. git-pull.sh | 78 ++++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 54 insertions(+), 24 deletions(-) diff --git a/git-pull.sh b/git-pull.sh index 0bbd5bf..101545e 100755 --- a/git-pull.sh +++ b/git-pull.sh @@ -76,14 +76,64 @@ do shift done +advice_tags_only () { + if test -z "$1" + then + echo "Fetching tags only." + return + fi + echo "Fetching tags only, you probably meant:" + echo " git fetch --tags" +} + +advice_detached_head () { + if test -z "$1" + then + echo "No default merge candidate on a detached HEAD." + return + fi + echo "You are not currently on a branch, so I cannot use any" + echo "'branch.<branchname>.merge' in your configuration file." + 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." +} + +advice_no_merge_candidates () { + if test -z "$1" + then + echo "No merge candidate for the current branch fetched." + return + fi + cat <<EOF +You asked me to pull without telling me which branch you +want to merge with, and 'branch.$2.merge' in +your configuration file does not tell me either. Please +specify which branch you want to merge on the command line and +try again (e.g. 'git pull <repository> <refspec>'). +See git-pull(1) for details. + +If you often merge with the same branch, you may want to +configure the following variables in your configuration +file: + + branch.$2.remote = <nickname> + branch.$2.merge = <remote-ref> + remote.<nickname>.url = <url>" + remote.<nickname>.fetch = <refspec> + +See git-config(1) for details. +EOF +} + error_on_no_merge_candidates () { exec >&2 + advice=$(git config --bool advice.pullNoMergeFound) for opt do case "$opt" in -t|--t|--ta|--tag|--tags) - echo "Fetching tags only, you probably meant:" - echo " git fetch --tags" + advice_tags_only "$advice" exit 1 esac done @@ -91,29 +141,9 @@ error_on_no_merge_candidates () { curr_branch=${curr_branch#refs/heads/} if [ -z "$curr_branch" ]; then - echo "You are not currently on a branch, so I cannot use any" - echo "'branch.<branchname>.merge' in your configuration file." - 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." + advice_detached_head "$advice" else - 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 "specify 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." - 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." + advice_no_merge_candidate "$advice" "$curr_branch" fi exit 1 } -- 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