# [PATCH] git-pull.sh: better warning message for "git pull" on detached head.

7 messages from 2009-04-06 to 2009-04-08. Participants: Matthieu Moy, Mike Ralphson, Finn Arne Gangstad, Junio C Hamano.
Thread: https://gitlist.dev/t/18756

## Matthieu Moy, 2009-04-06 21:14

Subject: [PATCH] git-pull.sh: better warning message for "git pull" on detached head.
Message-ID: <1239052487-6936-1-git-send-email-Matthieu.Moy@imag.fr>
URL: https://gitlist.dev/e/1239052487-6936-1-git-send-email-Matthieu.Moy%40imag.fr

```
Otherwise, git complains about not finding a branch to pull from in
'branch..merge', which is hardly understandable.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 git-pull.sh |   43 ++++++++++++++++++++++++++-----------------
 1 files changed, 26 insertions(+), 17 deletions(-)

diff --git a/git-pull.sh b/git-pull.sh
index 8a26763..ab29a9e 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -90,23 +90,32 @@ error_on_no_merge_candidates () {
 
 	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."
+	if [ -z "$curr_branch" ]; then
+		echo "You asked me to pull without telling me which branch you want"
+		echo "to merge with, and you are on a detached HEAD, so I cannot"
+		echo "know from 'branch.<branchname>.merge' in your configuration"
+		echo "file.  Please name 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 on the refspec."
+	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 "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."
+	fi
 	exit 1
 }
 
-- 
1.6.2.2.449.g92961.dirty

```

## Mike Ralphson, 2009-04-07 09:24

Subject: Re: [PATCH] git-pull.sh: better warning message for "git pull" on detached head.
Message-ID: <e2b179460904070224o3057c6efk6930bd1249adb0fe@mail.gmail.com>
URL: https://gitlist.dev/e/e2b179460904070224o3057c6efk6930bd1249adb0fe%40mail.gmail.com
In-Reply-To: <1239052487-6936-1-git-send-email-Matthieu.Moy@imag.fr>

```
2009/4/6 Matthieu Moy <Matthieu.Moy@imag.fr>:
> Otherwise, git complains about not finding a branch to pull from in
> 'branch..merge', which is hardly understandable.

> +               echo "You asked me to pull without telling me which branch you want"
> +               echo "to merge with, and you are on a detached HEAD, so I cannot"
> +               echo "know from 'branch.<branchname>.merge' in your configuration"
> +               echo "file.  Please name which branch you want to merge on the command"

'Know from' in this sense is a little confusing. Maybe something like:

s/so I cannot know from 'branch.<branchname>.merge' in your
configuration file/ \
so I cannot use any 'branch.<branchname>.merge' from your configuration file

?

> +               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>')."

I know you haven't changed this part, but as it's included in the
patch, what we're asking the user to do is to 'specify' the branch to
merge, not to 'name' it.

Mike

```

## Matthieu Moy, 2009-04-07 09:56

Subject: [PATCH v2] git-pull.sh: better warning message for "git pull" on detached head.
Message-ID: <1239098181-10360-1-git-send-email-Matthieu.Moy@imag.fr>
URL: https://gitlist.dev/e/1239098181-10360-1-git-send-email-Matthieu.Moy%40imag.fr
In-Reply-To: <e2b179460904070224o3057c6efk6930bd1249adb0fe@mail.gmail.com>

```
Otherwise, git complains about not finding a branch to pull from in
'branch..merge', which is hardly understandable. While we're there,
reword the sentences slightly.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
> 'Know from' in this sense is a little confusing. Maybe something like:
> 
> s/so I cannot know from 'branch.<branchname>.merge' in your
> configuration file/ \
> so I cannot use any 'branch.<branchname>.merge' from your configuration file

Makes sense, yes.

> I know you haven't changed this part, but as it's included in the
> patch, what we're asking the user to do is to 'specify' the branch to
> merge, not to 'name' it.

Applied too.

I also added s/details on the refspec/details/ in the pointer to
git-pull(1) since first patch.

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

diff --git a/git-pull.sh b/git-pull.sh
index 8a26763..6d5f558 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -90,23 +90,32 @@ error_on_no_merge_candidates () {
 
 	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."
+	if [ -z "$curr_branch" ]; then
+		echo "You asked me to pull without telling me which branch you want"
+		echo "to merge with, and you are on a detached HEAD, so I cannot"
+		echo "use any 'branch.<branchname>.merge' in your configuration"
+		echo "file.  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
+		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."
+	fi
 	exit 1
 }
 
-- 
1.6.2.2.449.g92961.dirty

```

## Finn Arne Gangstad, 2009-04-07 10:41

Subject: Re: [PATCH v2] git-pull.sh: better warning message for "git pull" on detached head.
Message-ID: <20090407104145.GA22658@pvv.org>
URL: https://gitlist.dev/e/20090407104145.GA22658%40pvv.org
In-Reply-To: <1239098181-10360-1-git-send-email-Matthieu.Moy@imag.fr>

```
On Tue, Apr 07, 2009 at 11:56:21AM +0200, Matthieu Moy wrote:
> Otherwise, git complains about not finding a branch to pull from in
> 'branch..merge', which is hardly understandable. While we're there,
> reword the sentences slightly.
> [...]
> +	if [ -z "$curr_branch" ]; then
> +		echo "You asked me to pull without telling me which branch you want"
> +		echo "to merge with, and you are on a detached HEAD, so I cannot"
> [...]

In this case why can't we just do

echo "You are currently not on any branch."

or

echo "git pull cannot be run without arguments unless you are on a branch."

And possibly also something like this:

echo "Usage: git pull <repository> <refspec>."
echo " See git-pull(1) for details."
echo

If you need all the verbosity this error otherwise gives, "detached
HEAD" is probably going to be confusing?

- Finn Arne

```

## Matthieu Moy, 2009-04-07 11:36

Subject: Re: [PATCH v2] git-pull.sh: better warning message for "git pull" on detached head.
Message-ID: <vpqvdpgn19y.fsf@bauges.imag.fr>
URL: https://gitlist.dev/e/vpqvdpgn19y.fsf%40bauges.imag.fr
In-Reply-To: <20090407104145.GA22658@pvv.org>

```
Finn Arne Gangstad <finnag@pvv.org> writes:

> On Tue, Apr 07, 2009 at 11:56:21AM +0200, Matthieu Moy wrote:
>> Otherwise, git complains about not finding a branch to pull from in
>> 'branch..merge', which is hardly understandable. While we're there,
>> reword the sentences slightly.
>> [...]
>> +	if [ -z "$curr_branch" ]; then
>> +		echo "You asked me to pull without telling me which branch you want"
>> +		echo "to merge with, and you are on a detached HEAD, so I cannot"
>> [...]
>
> In this case why can't we just do
>
> echo "You are currently not on any branch."

Well, I would understand this as "you can't pull when you're not on a
branch", which would be incorrect.

> echo "git pull cannot be run without arguments unless you are on a branch."

This is better (less missleading).

> And possibly also something like this:
>
> echo "Usage: git pull <repository> <refspec>."
> echo " See git-pull(1) for details."

This usage string would be incorrect, repository and refspec are not
always mandatory. To be correct, it should be
Usage: git pull [<repository> <refspec>]
and then you're back to the problem of having to explain why they are
optionnal.

> If you need all the verbosity this error otherwise gives, "detached
> HEAD" is probably going to be confusing?

Grepping the source, "not on a branch" seems more widely used than
"detached head" in the UI (including in another place of git-pull.sh),
so, yes, something like this would be better:

	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."
	else

-- 
Matthieu

```

## Junio C Hamano, 2009-04-08 00:43

Subject: Re: [PATCH v2] git-pull.sh: better warning message for "git pull" on detached head.
Message-ID: <7vk55wvutb.fsf@gitster.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vk55wvutb.fsf%40gitster.siamese.dyndns.org
In-Reply-To: <vpqvdpgn19y.fsf@bauges.imag.fr>

```
Matthieu Moy <Matthieu.Moy@imag.fr> writes:

> Grepping the source, "not on a branch" seems more widely used than
> "detached head" in the UI (including in another place of git-pull.sh),
> so, yes, something like this would be better:

Yeah, "not on a branch" sounds like the best wording.

```

## Matthieu Moy, 2009-04-08 07:24

Subject: [PATCH] git-pull.sh: better warning message for "git pull" on detached head.
Message-ID: <1239175443-7693-1-git-send-email-Matthieu.Moy@imag.fr>
URL: https://gitlist.dev/e/1239175443-7693-1-git-send-email-Matthieu.Moy%40imag.fr
In-Reply-To: <7vk55wvutb.fsf@gitster.siamese.dyndns.org>

```
Otherwise, git complains about not finding a branch to pull from in
'branch..merge', which is hardly understandable. While we're there,
reword the sentences slightly.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 git-pull.sh |   42 +++++++++++++++++++++++++-----------------
 1 files changed, 25 insertions(+), 17 deletions(-)

diff --git a/git-pull.sh b/git-pull.sh
index 8a26763..8c75027 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -90,23 +90,31 @@ error_on_no_merge_candidates () {
 
 	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."
+	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."
+	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."
+	fi
 	exit 1
 }
 
-- 
1.6.2.2.449.g92961.dirty

```
