# [PATCH] git-symbolic-ref: fix error message when ref doesn't exist

3 messages from 2007-03-18 to 2007-03-19. Participants: Julian Phillips, Junio C Hamano.
Thread: https://gitlist.dev/t/7287

## Julian Phillips, 2007-03-18 01:53

Subject: [PATCH] git-symbolic-ref: fix error message when ref doesn't exist
Message-ID: <20070318020645.2444.75365.julian@quantumfyre.co.uk>
URL: https://gitlist.dev/e/20070318020645.2444.75365.julian%40quantumfyre.co.uk

```
When calling resolve_ref from check_symref set reading to 1, since we
do want to know if the given ref doesn't exist.  This means that
"git symbolic-ref foo" will now print "fatal: No such ref: foo" as
expected.

Signed-off-by: Julian Phillips <julian@quantumfyre.co.uk>
---

While looking at how fetch worked, I noticed that symbolic-ref was
supposed to differentiate between non-existent refs and non-symbolic refs.
Something I hadn't noticed it doing on those occasions when my fingers
had failed me ...

I also noticed that the man page says that symbolic-ref will return 1 when
the specified reference is non-symbolic.  This is only true when using -q,
but I don't know if the code or man page wants changing ...

 builtin-symbolic-ref.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/builtin-symbolic-ref.c b/builtin-symbolic-ref.c
index d41b406..a93c85d 100644
--- a/builtin-symbolic-ref.c
+++ b/builtin-symbolic-ref.c
@@ -9,7 +9,7 @@ static void check_symref(const char *HEAD, int quiet)
 {
 	unsigned char sha1[20];
 	int flag;
-	const char *refs_heads_master = resolve_ref(HEAD, sha1, 0, &flag);
+	const char *refs_heads_master = resolve_ref(HEAD, sha1, 1, &flag);
 
 	if (!refs_heads_master)
 		die("No such ref: %s", HEAD);
-- 
1.5.0.4

```

## Junio C Hamano, 2007-03-19 08:47

Subject: Re: [PATCH] git-symbolic-ref: fix error message when ref doesn't exist
Message-ID: <7vslc1iprn.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vslc1iprn.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <20070318020645.2444.75365.julian@quantumfyre.co.uk>

```
Julian Phillips <julian@quantumfyre.co.uk> writes:

> When calling resolve_ref from check_symref set reading to 1, since we
> do want to know if the given ref doesn't exist.  This means that
> "git symbolic-ref foo" will now print "fatal: No such ref: foo" as
> expected.

Hmmmm.  That would break:

	$ rm -fr a; mkdir a; cd a
	$ git init-db
        $ git symbolic-ref HEAD
        refs/heads/master

wouldn't it?  We do want it not to fail and tell us that the
commit we are going to create will be on refs/heads/master
(i.e. "the master branch").

And  the command errors out as expected when given a
non-existent symbolic ref:

	$ git symbolic-ref no-such; echo $?
	fatal: ref no-such is not a symbolic ref
	128

```

## Julian Phillips, 2007-03-19 09:03

Subject: Re: [PATCH] git-symbolic-ref: fix error message when ref doesn't exist
Message-ID: <Pine.LNX.4.64.0703190857320.25879@beast.quantumfyre.co.uk>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0703190857320.25879%40beast.quantumfyre.co.uk
In-Reply-To: <7vslc1iprn.fsf@assigned-by-dhcp.cox.net>

```
On Mon, 19 Mar 2007, Junio C Hamano wrote:

> Julian Phillips <julian@quantumfyre.co.uk> writes:
>
>> When calling resolve_ref from check_symref set reading to 1, since we
>> do want to know if the given ref doesn't exist.  This means that
>> "git symbolic-ref foo" will now print "fatal: No such ref: foo" as
>> expected.
>
> Hmmmm.  That would break:
>
> 	$ rm -fr a; mkdir a; cd a
> 	$ git init-db
>        $ git symbolic-ref HEAD
>        refs/heads/master
>
> wouldn't it?  We do want it not to fail and tell us that the
> commit we are going to create will be on refs/heads/master
> (i.e. "the master branch").

Um .. yes ... as per the comment in refs.c ... :$

>
> And  the command errors out as expected when given a
> non-existent symbolic ref:
>
> 	$ git symbolic-ref no-such; echo $?
> 	fatal: ref no-such is not a symbolic ref
> 	128
>

The thing is, that wasn't what I expected.  From looking at the code for 
symbolic-ref I was expecting:

 	$ git symbolic-ref no-such; echo $?
 	fatal: No such ref: no-such
 	128

In particular, in quiet mode you will get a return of 1 - rather than 
128, which would potentially lead you astray if you belived the man page 
...

-- 
Julian

  ---
"Intelligence without character is a dangerous thing."
-- G. Steinem

```
