Re: check-ref-format question
- From
Michael J Gruber <git@drmicha.warpmail.net>
- Date
- May 13, 2009, 14:13 UTC
- Message-ID
- <4A0AD5A2.2090103@drmicha.warpmail.net>
- In-Reply-To
- <93c3eada0905121709k73a47bddu60def6b5fbc1b15e@mail.gmail.com>
Geoff Russell venit, vidit, dixit 13.05.2009 02:09:
Show 16 quoted lines
> 1 $ git --version > git version 1.6.2.3 > 2 $ git check-ref-format xxxx && echo OK > 3 $ git-check-ref-format --branch xxxx && echo OK > xxxx > OK > 4 $ git check-ref-format --branch xxxx && echo OK > usage: git check-ref-format refname > > > 2 seems wrong, > I tried 3 after looking at builtin-check-ref-format.c > I couldn't find any test cases in the git/t directory > > From the documenation, I expect "git check-ref-format xxx" to return 0 if xxx is > a valid branch or ref name. git version 1.6.3 gives the same results.
There are several things going on:
A) In 3 you use a different git than in 1,2,4. You told us the latter is 1.6.2.3, and I'm telling you the former contains v1.6.2.1-310-ga31dca0 (which has the new --branch option). This simply checks whether refs/heads/xxxx is sane. (It also resolves @{-1} and such, which is what makes it useful at all.)
B) "master" certainly looks like a valid refname, the doc seems to imply that it should pass the check.
C) Looking at the code, check-ref-format checks explicitly for the presence of at least 2 levels: foo/bar is good, foo is bad. So, master always had been bad, as well (or bad) as full sha1s!
The code has always behaved like C since its inception but I don't know the rationale behind the 2 level requirement. Daniel, Junio?
Michael