# git-check-ref-format returns 1 for valid branch names

5 messages from 2007-03-22 to 2007-03-22. Participants: Nikolai Weibull, Junio C Hamano, Linus Torvalds.
Thread: https://gitlist.dev/t/7356

## Nikolai Weibull, 2007-03-22 20:24

Subject: git-check-ref-format returns 1 for valid branch names
Message-ID: <dbfc82860703221324k48690833g6731ef75562839d6@mail.gmail.com>
URL: https://gitlist.dev/e/dbfc82860703221324k48690833g6731ef75562839d6%40mail.gmail.com

```
I'm obviously doing something wrong, but in git 1.5.0.4

% git check-ref-format abc
% echo $?
1

What am I missing here?

  nikolai

```

## Junio C Hamano, 2007-03-22 20:32

Subject: Re: git-check-ref-format returns 1 for valid branch names
Message-ID: <7vejnht3x2.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vejnht3x2.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <dbfc82860703221324k48690833g6731ef75562839d6@mail.gmail.com>

```
"Nikolai Weibull" <now@bitwi.se> writes:

> I'm obviously doing something wrong, but in git 1.5.0.4
>
> % git check-ref-format abc
> % echo $?
> 1
>
> What am I missing here?

If you are trying to see if abc is a valid branch name, try refs/heads/abc.

```

## Nikolai Weibull, 2007-03-22 20:42

Subject: Re: git-check-ref-format returns 1 for valid branch names
Message-ID: <dbfc82860703221342h4e1ade1am2961a0a996d7d20c@mail.gmail.com>
URL: https://gitlist.dev/e/dbfc82860703221342h4e1ade1am2961a0a996d7d20c%40mail.gmail.com
In-Reply-To: <7vejnht3x2.fsf@assigned-by-dhcp.cox.net>

```
On 3/22/07, Junio C Hamano <junkio@cox.net> wrote:
> "Nikolai Weibull" <now@bitwi.se> writes:
>
> > I'm obviously doing something wrong, but in git 1.5.0.4
> >
> > % git check-ref-format abc
> > % echo $?
> > 1
> >
> > What am I missing here?
>
> If you are trying to see if abc is a valid branch name, try refs/heads/abc.

Thanks.  I just saw an example in git-checkout (where it's testing
"heads/$newbranch").

  nikolai

```

## Linus Torvalds, 2007-03-22 21:03

Subject: Re: git-check-ref-format returns 1 for valid branch names
Message-ID: <Pine.LNX.4.64.0703221358420.6730@woody.linux-foundation.org>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0703221358420.6730%40woody.linux-foundation.org
In-Reply-To: <7vejnht3x2.fsf@assigned-by-dhcp.cox.net>

```


On Thu, 22 Mar 2007, Junio C Hamano wrote:

> "Nikolai Weibull" <now@bitwi.se> writes:
> 
> > I'm obviously doing something wrong, but in git 1.5.0.4
> >
> > % git check-ref-format abc
> > % echo $?
> > 1
> >
> > What am I missing here?
> 
> If you are trying to see if abc is a valid branch name, try refs/heads/abc.

.. and before anybody wonders why it wants the "fully qualified" name, 
it's because "abc" on its own is ambiguous. Is it a _tag_ called "abc", or 
a branch, or what? That explains why - if you really want to verify a 
ref-name, you need to give the full name..

On the other hand, if you don't care, and you just want "is this a valid 
commit name", use

	sha1=$(git rev-parse --verify "$name"^0) || exit

or similar. It won't care if "name" is ambiguous or not, it will just try 
to parse it as a revision expression (with the "^0" there to force a tag 
to be converted to a commit-name, or force an error if the SHA1 is not a 
valid commit).

			Linus

```

## Nikolai Weibull, 2007-03-22 21:58

Subject: Re: git-check-ref-format returns 1 for valid branch names
Message-ID: <dbfc82860703221458j690d1cafve01174eda8f149ee@mail.gmail.com>
URL: https://gitlist.dev/e/dbfc82860703221458j690d1cafve01174eda8f149ee%40mail.gmail.com
In-Reply-To: <Pine.LNX.4.64.0703221358420.6730@woody.linux-foundation.org>

```
On 3/22/07, Linus Torvalds <torvalds@linux-foundation.org> wrote:
>
>
> On Thu, 22 Mar 2007, Junio C Hamano wrote:
>
> > "Nikolai Weibull" <now@bitwi.se> writes:
> >
> > > I'm obviously doing something wrong, but in git 1.5.0.4
> > >
> > > % git check-ref-format abc
> > > % echo $?
> > > 1
> > >
> > > What am I missing here?
> >
> > If you are trying to see if abc is a valid branch name, try refs/heads/abc.
>
> .. and before anybody wonders why it wants the "fully qualified" name,
> it's because "abc" on its own is ambiguous. Is it a _tag_ called "abc", or
> a branch, or what? That explains why - if you really want to verify a
> ref-name, you need to give the full name..
>
> On the other hand, if you don't care, and you just want "is this a valid
> commit name", use
>
>         sha1=$(git rev-parse --verify "$name"^0) || exit

Thanks for the clarification.

What I was after was a way to verify that a name is a valid new name
of a branch, for the Zsh completion definition in the context of
git-checkout -b <new_branch>. [1]  After posting I realized that
perhaps checking out the sources for git-checkout would enlighten me,
which it did, as it uses git-check-ref-format "heads/$newbranch" to
verify that the new branch's name  is valid.

[1] It's not really going to try to complete anything here, but verify
that the new branch's name is valid while the user types it in. [2]
[2]  Hm, perhaps completing existing branch-names makes more sense,
allowing the user to create a new branch-name based on an old one.

```
