All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Make '@' not valid in a ref name.
@ 2006-05-21  1:37 Shawn Pearce
  2006-05-21  1:42 ` Junio C Hamano
  2006-05-21  2:00 ` Eric Wong
  0 siblings, 2 replies; 5+ messages in thread
From: Shawn Pearce @ 2006-05-21  1:37 UTC (permalink / raw)
  To: Junio Hamano; +Cc: git

Now that the sha1 expression syntax supports looking up a ref's
value at a prior point in time through the '@' operator the '@'
operator should not be permitted in a ref name.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

---

90d3212d5351d2f6c6ad33578c9f9df2e07af12e
 refs.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

90d3212d5351d2f6c6ad33578c9f9df2e07af12e
diff --git a/refs.c b/refs.c
index eeb1196..2530c99 100644
--- a/refs.c
+++ b/refs.c
@@ -213,14 +213,14 @@ int get_ref_sha1(const char *ref, unsign
  *
  * - any path component of it begins with ".", or
  * - it has double dots "..", or
- * - it has ASCII control character, "~", "^", ":" or SP, anywhere, or
+ * - it has ASCII control character, "@", "~", "^", ":" or SP,
  * - it ends with a "/".
  */
 
 static inline int bad_ref_char(int ch)
 {
 	return (((unsigned) ch) <= ' ' ||
-		ch == '~' || ch == '^' || ch == ':' ||
+		ch == '@' || ch == '~' || ch == '^' || ch == ':' ||
 		/* 2.13 Pattern Matching Notation */
 		ch == '?' || ch == '*' || ch == '[');
 }
-- 
1.3.3.gfad60

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] Make '@' not valid in a ref name.
  2006-05-21  1:37 [PATCH] Make '@' not valid in a ref name Shawn Pearce
@ 2006-05-21  1:42 ` Junio C Hamano
  2006-05-21  1:58   ` Shawn Pearce
  2006-05-21  2:00 ` Eric Wong
  1 sibling, 1 reply; 5+ messages in thread
From: Junio C Hamano @ 2006-05-21  1:42 UTC (permalink / raw)
  To: Shawn Pearce; +Cc: git

I am not a fan of retroactively disallowing what we used to
allow.  Is this unavoidable?

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] Make '@' not valid in a ref name.
  2006-05-21  1:42 ` Junio C Hamano
@ 2006-05-21  1:58   ` Shawn Pearce
  0 siblings, 0 replies; 5+ messages in thread
From: Shawn Pearce @ 2006-05-21  1:58 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

Junio C Hamano <junkio@cox.net> wrote:
> I am not a fan of retroactively disallowing what we used to
> allow.  Is this unavoidable?
> 

We're talking about it on #git right now.  Someone actually uses
refs like 'user@host/foo' and thus doesn't like this patch either.

We were talking about disallowing '@{' instead.  Really its just
'@{<some run that smells like a date}' at the end of the ref which
would want to be disallowed; similiar to how ~ and ^ really only
need to be disallowed near the end.

The date parser grabs '@{' not '@' so 'user@host/foo@{yesterday}'
makes sense to it.  But 'user@{host}/foo@{yesterday}' is going
to cause problems as the date parser will attempt to evaluate
'host}/foo@{yesterday'.  :-(

-- 
Shawn.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] Make '@' not valid in a ref name.
  2006-05-21  1:37 [PATCH] Make '@' not valid in a ref name Shawn Pearce
  2006-05-21  1:42 ` Junio C Hamano
@ 2006-05-21  2:00 ` Eric Wong
  2006-05-21  2:19   ` Shawn Pearce
  1 sibling, 1 reply; 5+ messages in thread
From: Eric Wong @ 2006-05-21  2:00 UTC (permalink / raw)
  To: Shawn Pearce; +Cc: Junio Hamano, git, Martin Langhoff

Shawn Pearce <spearce@spearce.org> wrote:
> Now that the sha1 expression syntax supports looking up a ref's
> value at a prior point in time through the '@' operator the '@'
> operator should not be permitted in a ref name.

This would break git-archimport (where email addresses are the first
part of the branch/tag names).

-- 
Eric Wong

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] Make '@' not valid in a ref name.
  2006-05-21  2:00 ` Eric Wong
@ 2006-05-21  2:19   ` Shawn Pearce
  0 siblings, 0 replies; 5+ messages in thread
From: Shawn Pearce @ 2006-05-21  2:19 UTC (permalink / raw)
  To: Eric Wong; +Cc: Junio Hamano, git, Martin Langhoff

Eric Wong <normalperson@hand.yhbt.net> wrote:
> Shawn Pearce <spearce@spearce.org> wrote:
> > Now that the sha1 expression syntax supports looking up a ref's
> > value at a prior point in time through the '@' operator the '@'
> > operator should not be permitted in a ref name.
> 
> This would break git-archimport (where email addresses are the first
> part of the branch/tag names).

OK, so this patch is quite unpopular and should never make it
into GIT.  I'm glad we have many eyes on this mailing list!


There was just a short conversation on #git about converting
the sha1 expression evaluator into a split parser/interpreter
model.  The idea here would be to convert an expression such as

  HEAD@{yesterday}~3^{tree}

into a an expression tree such as (in LISP style):

  (peel-onion (walk-back 3 (date-spec yesterday (ref HEAD))))

with such a tree it is relatively easy to evaluate the expression,
but its also easy to determine if a ref name is valid.  Just pass
it through the parser and see if you get back anything more complex
then '(ref <input>)'.

Comments?

-- 
Shawn.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2006-05-21  2:19 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-05-21  1:37 [PATCH] Make '@' not valid in a ref name Shawn Pearce
2006-05-21  1:42 ` Junio C Hamano
2006-05-21  1:58   ` Shawn Pearce
2006-05-21  2:00 ` Eric Wong
2006-05-21  2:19   ` Shawn Pearce

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.