git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Jan Krüger" <jk@jk.gs>
To: Jeff King <peff@peff.net>
Cc: Jan Nieuwenhuizen <janneke-list@xs4all.nl>,
	Tomas Carnecky <tom@dbservice.com>,
	git list <git@vger.kernel.org>,
	Junio C Hamano <gitster@pobox.com>
Subject: [PATCH v2] git-pull.sh --rebase: overhaul error handling when no candidates are found
Date: Thu, 12 Nov 2009 17:08:14 +0100	[thread overview]
Message-ID: <20091112170814.1858aba4@perceptron> (raw)
In-Reply-To: <20091112150626.GA24848@coredump.intra.peff.net>

* The longish error message displayed when the user uses "git pull" but
  has no remote/merge/rebase lines configured for the current branch
  contains example configuration to remedy the situation... but the
  example uses a rather invalid syntax, using the dotted syntax "git
  config" accepts, but also "=" separators which are used in the config
  file format. It also implies that this syntax is valid in git config
  files. This changes the example to use valid config file syntax.

* When git pull --rebase is used, error_on_no_merge_candidates still
  thinks we're trying to merge, so the resulting message talks about
  merge all the time. This makes the message depend on the mode of
  operation.

Signed-off-by: Jan Krüger <jk@jk.gs>
---
So this still uses config file syntax, but the erroneous check for
using the "rebase" setting is gone. Instead, if --rebase is in effect,
include "rebase = true" in the sample config snippet.

By the way, Jeff, it's precisely your patch that confused me into
thinking there was a bug. I sort of assumed the messages you added had
already been there in the version Jan N. is using. Stupid assumption, I
guess.

 git-pull.sh |   41 ++++++++++++++++++++++++++---------------
 1 files changed, 26 insertions(+), 15 deletions(-)

diff --git a/git-pull.sh b/git-pull.sh
index 37f3d93..315ec51 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -91,45 +91,56 @@ error_on_no_merge_candidates () {
 		esac
 	done
 
+	if [ true = "$rebase" ]; then
+		op_type=rebase
+		op_prep=against
+	else
+		op_type=merge
+		op_prep=with
+	fi
+
 	curr_branch=${curr_branch#refs/heads/}
 	upstream=$(git config "branch.$curr_branch.merge")
 	remote=$(git config "branch.$curr_branch.remote")
 
 	if [ $# -gt 1 ]; then
-		echo "There are no candidates for merging in the refs that you just fetched."
+		echo "There are no candidates for using the refs that you just fetched."
 		echo "Generally this means that you provided a wildcard refspec which had no"
 		echo "matches on the remote end."
 	elif [ $# -gt 0 ] && [ "$1" != "$remote" ]; then
 		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 to use. Because this is not the default configured remote"
 		echo "for your current branch, you must specify a branch on the command line."
 	elif [ -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 "Please specify which branch you want to use on the command"
 		echo "line and try again (e.g. 'git pull <repository> <refspec>')."
 		echo "See git-pull(1) for details."
 	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"
-		echo "specify which branch you want to merge on the command line and"
+		echo "want to $op_type $op_prep, and 'branch.${curr_branch}.merge' in"
+		echo "your configuration file does not tell me either. Please"
+		echo "specify which branch you want to use 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 "If you often $op_type $op_prep the same branch, you may want to"
+		echo "use something like the following in your configuration 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 "    [branch \"${curr_branch}\"]"
+		echo "    remote = <nickname>"
+		echo "    merge = <remote-ref>"
+		test rebase = "$op_type" &&
+			echo "    rebase = true"
+		echo "    [remote \"<nickname>\"]"
+		echo "    url = <url>"
+		echo "    fetch = <refspec>"
 		echo
 		echo "See git-config(1) for details."
 	else
-		echo "Your configuration specifies to merge the ref '${upstream#refs/heads/}' from the"
-		echo "remote, but no such ref was fetched."
+		echo "Your configuration specifies to $op_type $op_prep the ref '${upstream#refs/heads/}'"
+		echo "from the remote, but no such ref was fetched."
 	fi
 	exit 1
 }
-- 
1.6.5.2.156.g89436

  parent reply	other threads:[~2009-11-12 16:08 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-11 13:22 Unhelpful "branch.master.remote = <nickname>" advice? Jan Nieuwenhuizen
2009-11-11 14:08 ` Tomas Carnecky
     [not found]   ` <1257965806.26362.132.camel@heerbeest>
2009-11-11 19:10     ` Tomas Carnecky
2009-11-11 19:34       ` Jan Nieuwenhuizen
2009-11-11 20:32         ` Tomas Carnecky
2009-11-12 14:17           ` Jan Nieuwenhuizen
2009-11-12 14:53             ` [PATCH] git-pull.sh: overhaul error handling when no candidates are found Jan Krüger
2009-11-12 15:06               ` Jeff King
2009-11-12 15:25                 ` Jan Krüger
2009-11-12 15:28                   ` Jeff King
2009-11-12 16:08                 ` Jan Krüger [this message]
2009-11-13  4:07                   ` [PATCH v2] git-pull.sh --rebase: " Jonathan Nieder
2009-11-27 14:17                     ` [PATCH] pull: clarify advice for the unconfigured error case Jonathan Nieder
2009-12-02 23:08                       ` Junio C Hamano
2009-12-03  1:26                         ` Jonathan Nieder
2009-12-03  1:43                           ` Jeff King
2009-12-03  8:49                             ` Jan Nieuwenhuizen
2009-12-03 10:51                         ` Jan Krüger
2009-12-07  0:29                           ` Junio C Hamano
2009-11-15  9:08                   ` [PATCH v2] git-pull.sh --rebase: overhaul error handling when no candidates are found Junio C Hamano
2009-11-12 14:56             ` Unhelpful "branch.master.remote = <nickname>" advice? Björn Steinbrink
2009-11-12 15:03             ` Tomas Carnecky
2009-11-18 12:29   ` [PATCH] Makefile: add uninstall target. Fixes elementary good cleaning manners Jan Nieuwenhuizen
2009-11-18 13:28     ` Matthieu Moy
2009-11-11 14:13 ` Unhelpful "branch.master.remote = <nickname>" advice? Jan Krüger
2009-11-11 19:54 ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20091112170814.1858aba4@perceptron \
    --to=jk@jk.gs \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=janneke-list@xs4all.nl \
    --cc=peff@peff.net \
    --cc=tom@dbservice.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).