* check-ref-format question
@ 2009-05-13 0:09 Geoff Russell
2009-05-13 14:13 ` Michael J Gruber
0 siblings, 1 reply; 8+ messages in thread
From: Geoff Russell @ 2009-05-13 0:09 UTC (permalink / raw)
To: git
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.
Cheers,
Geoff.
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: check-ref-format question 2009-05-13 0:09 check-ref-format question Geoff Russell @ 2009-05-13 14:13 ` Michael J Gruber 2009-05-13 14:40 ` Sverre Rabbelier ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Michael J Gruber @ 2009-05-13 14:13 UTC (permalink / raw) To: geoffrey.russell; +Cc: git, Daniel Barkalow, Junio C Hamano Geoff Russell venit, vidit, dixit 13.05.2009 02:09: > 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 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: check-ref-format question 2009-05-13 14:13 ` Michael J Gruber @ 2009-05-13 14:40 ` Sverre Rabbelier 2009-05-13 15:03 ` Daniel Barkalow 2009-05-14 0:26 ` check-ref-format question Geoff Russell 2 siblings, 0 replies; 8+ messages in thread From: Sverre Rabbelier @ 2009-05-13 14:40 UTC (permalink / raw) To: Michael J Gruber; +Cc: geoffrey.russell, git, Daniel Barkalow, Junio C Hamano Heya, On Wed, May 13, 2009 at 16:13, Michael J Gruber <git@drmicha.warpmail.net> wrote: > The code has always behaved like C since its inception but I don't know > the rationale behind the 2 level requirement. Daniel, Junio? Methinks that since it is a plumbing command it is up to the porcelain to translate "master" into "refs/heads/master" or "refs/remotes/origin/master" (or whatever is appropriate) before dispatching to check-ref-format? -- Cheers, Sverre Rabbelier ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: check-ref-format question 2009-05-13 14:13 ` Michael J Gruber 2009-05-13 14:40 ` Sverre Rabbelier @ 2009-05-13 15:03 ` Daniel Barkalow 2009-05-13 15:43 ` [PATCH] Documentation: clarify / requirement in 'git check-ref-format' Michael J Gruber 2009-05-14 0:26 ` check-ref-format question Geoff Russell 2 siblings, 1 reply; 8+ messages in thread From: Daniel Barkalow @ 2009-05-13 15:03 UTC (permalink / raw) To: Michael J Gruber; +Cc: geoffrey.russell, git, Junio C Hamano On Wed, 13 May 2009, Michael J Gruber wrote: > Geoff Russell venit, vidit, dixit 13.05.2009 02:09: > > 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? In general, it's because you use it right before trying to use git update-ref $name, and you probably don't really want to change refs/master. Unless you know exactly what you're going (in which case, you're unlikely to check whether it's okay), you want to have a first level that specifies the type of ref and one or more additional levels that specify which ref of that type it is. I believe that, if you've got "master", and you want to do the sensible thing with it (i.e., the file you care about is .git/refs/heads/master), you want to use rev-parse with some option or other, not check-ref-format, but I don't know the plumbing-level shell API very well. -Daniel *This .sig left intentionally blank* ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] Documentation: clarify / requirement in 'git check-ref-format' 2009-05-13 15:03 ` Daniel Barkalow @ 2009-05-13 15:43 ` Michael J Gruber 2009-05-18 2:36 ` Geoff Russell 0 siblings, 1 reply; 8+ messages in thread From: Michael J Gruber @ 2009-05-13 15:43 UTC (permalink / raw) To: git; +Cc: Daniel Barkalow, geoffrey.russell, Sverre Rabbelier, Junio C Hamano 'git check-ref-format' checks for the presence of at least one '/', the idea being that there should be no refs directly below 'refs/', so there should be a category like 'heads/' or 'tags/' in a refname. Try and make this clearer in the man page. Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> --- Daniel Barkalow venit, vidit, dixit 13.05.2009 17:03: > On Wed, 13 May 2009, Michael J Gruber wrote: > >> Geoff Russell venit, vidit, dixit 13.05.2009 02:09: >>> 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? > > In general, it's because you use it right before trying to use git > update-ref $name, and you probably don't really want to change > refs/master. Unless you know exactly what you're going (in which case, > you're unlikely to check whether it's okay), you want to have a first > level that specifies the type of ref and one or more additional levels > that specify which ref of that type it is. > > I believe that, if you've got "master", and you want to do the sensible > thing with it (i.e., the file you care about is .git/refs/heads/master), > you want to use rev-parse with some option or other, not check-ref-format, > but I don't know the plumbing-level shell API very well. > > -Daniel > *This .sig left intentionally blank* Thanks Daniel and Sverre for the clarification, this makes a lot of sense. Michael Documentation/git-check-ref-format.txt | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/Documentation/git-check-ref-format.txt b/Documentation/git-check-ref-format.txt index bf43454..0b7982e 100644 --- a/Documentation/git-check-ref-format.txt +++ b/Documentation/git-check-ref-format.txt @@ -25,6 +25,10 @@ imposes the following rules on how references are named: grouping, but no slash-separated component can begin with a dot `.`. +. They must contain at least one `/`. This enforces the presence of a + category like `heads/`, `tags/` etc. but the actual names are not + restricted. + . They cannot have two consecutive dots `..` anywhere. . They cannot have ASCII control characters (i.e. bytes whose -- 1.6.3.195.gad816 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] Documentation: clarify / requirement in 'git check-ref-format' 2009-05-13 15:43 ` [PATCH] Documentation: clarify / requirement in 'git check-ref-format' Michael J Gruber @ 2009-05-18 2:36 ` Geoff Russell 0 siblings, 0 replies; 8+ messages in thread From: Geoff Russell @ 2009-05-18 2:36 UTC (permalink / raw) To: Michael J Gruber; +Cc: git, Daniel Barkalow, Sverre Rabbelier, Junio C Hamano On Thu, May 14, 2009 at 1:13 AM, Michael J Gruber <git@drmicha.warpmail.net> wrote: > 'git check-ref-format' checks for the presence of at least one '/', the > idea being that there should be no refs directly below 'refs/', so there > should be a category like 'heads/' or 'tags/' in a refname. > > Try and make this clearer in the man page. > > [....snip] > +. They must contain at least one `/`. This enforces the presence of a > + category like `heads/`, `tags/` etc. but the actual names are not > + restricted. > + > . They cannot have two consecutive dots `..` anywhere. > > [ ...snip] Ah, okay. This is clear. Many thanks. Cheers, Geoff ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: check-ref-format question 2009-05-13 14:13 ` Michael J Gruber 2009-05-13 14:40 ` Sverre Rabbelier 2009-05-13 15:03 ` Daniel Barkalow @ 2009-05-14 0:26 ` Geoff Russell 2009-05-14 7:24 ` Michael J Gruber 2 siblings, 1 reply; 8+ messages in thread From: Geoff Russell @ 2009-05-14 0:26 UTC (permalink / raw) To: Michael J Gruber; +Cc: git, Daniel Barkalow, Junio C Hamano On Wed, May 13, 2009 at 11:43 PM, Michael J Gruber <git@drmicha.warpmail.net> wrote: > Geoff Russell venit, vidit, dixit 13.05.2009 02:09: >> 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.) Sorry, my mistake I was running in 2 windows on 2 machine and got confused. Ignore line 3 in my example. > > B) "master" certainly looks like a valid refname, the doc seems to imply > that it should pass the check. $ git --version git version 1.6.2.3 $ git check-ref-format xxxx && echo OK $ git check-ref-format master && echo OK $ git check-ref-format master/xxxx && echo OK OK I'm confused. Geoff. > > 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 > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: check-ref-format question 2009-05-14 0:26 ` check-ref-format question Geoff Russell @ 2009-05-14 7:24 ` Michael J Gruber 0 siblings, 0 replies; 8+ messages in thread From: Michael J Gruber @ 2009-05-14 7:24 UTC (permalink / raw) To: geoffrey.russell; +Cc: git, Daniel Barkalow, Junio C Hamano Geoff Russell venit, vidit, dixit 14.05.2009 02:26: > On Wed, May 13, 2009 at 11:43 PM, Michael J Gruber > <git@drmicha.warpmail.net> wrote: >> Geoff Russell venit, vidit, dixit 13.05.2009 02:09: >>> 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.) > > Sorry, my mistake I was running in 2 windows on 2 machine and got > confused. Ignore > line 3 in my example. > >> >> B) "master" certainly looks like a valid refname, the doc seems to imply >> that it should pass the check. > > $ git --version > git version 1.6.2.3 > $ git check-ref-format xxxx && echo OK > $ git check-ref-format master && echo OK > $ git check-ref-format master/xxxx && echo OK > OK > > I'm confused. > > Geoff. Please read on to my item C), and check the documentation patch which I submitted. If you're still confused after that I need to revise my patch ;) > > >> >> 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 >> ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2009-05-18 2:36 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-05-13 0:09 check-ref-format question Geoff Russell 2009-05-13 14:13 ` Michael J Gruber 2009-05-13 14:40 ` Sverre Rabbelier 2009-05-13 15:03 ` Daniel Barkalow 2009-05-13 15:43 ` [PATCH] Documentation: clarify / requirement in 'git check-ref-format' Michael J Gruber 2009-05-18 2:36 ` Geoff Russell 2009-05-14 0:26 ` check-ref-format question Geoff Russell 2009-05-14 7:24 ` Michael J Gruber
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).