git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] t5540-http-push.sh: avoid non-portable grep -P

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 26, 2009, 21:48 UTC
Message-ID
<7vmyc8rhry.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<76718490902261243gaebdd8an2bd75bf625556f7b@mail.gmail.com>
Jay Soffian <jaysoffian@gmail.com> writes:
Show 17 quoted lines
>>> +x1="[a-z0-9]"
>>
>> Why [a-z0-9] not [0-9a-f]?
>
> No reason. It's just what popped out of my head.
>
>> I'd rather see the basic BRE grep used if you are shooting for
>> portability.
>>
>> There are some oddballs in the source (git-submodule.sh is a notable
>> offender) but none of the core-ish scripts uses egrep nor "grep -E".
>
> Sigh, I just wanted the test to pass. I did a check to see if any
> other tests were already using egrep, and when I found that they were,
> I thought that would be good enough.
>
> Originally I had switched to perl. Would you prefer:
Not really.  

If we are fixing it we should do it right. The regexp you inherited seem somewhat suboptimal, too.

"(?:PUT|MOVE) .+objects/[\da-z]{2}/[\da-z]{38}_[\da-z\-]{40} HTTP/[0-9.]+" 20\d"
 - It has a double-quote. can it be anywhere or only at the beginning (if
   so "^" is missing at the beginning -- I didn't check)?
 - We then expect PUT or MOVE; Ok (that's "\(PUT\|MOVE\)").
 - We then expect one space and one or more garbage before we see
   "objects/"; do we really care if it is one-or-more garbage, or is it
   zero-or-more garbage?  Don't we want to see slash before "objects/" (I
   think we do)?
 - Then we expect objects/ and two hexdigits that should be spelled as
   [0-9a-f]{2} or [0-9a-f][0-9a-f] (or $x2).
 - Then we expect / and thiry-eight hexdigits, underscore and then 40
   hexdigits (I think your $x38 and $x40 are fine);
 - Then we expect exactly one SP followed by HTTP/ (Ok);
 - And version can be one-or-more of [0-9.]; do we really allow
   HTTP/..999?, or we don't care?  I think we shouldn't care, and in that
   case I think [.0-9]* is good enough here;
So perhaps define a variable:
good="\"\(PUT\|MOVE\) .*/objects/$x2/${x38}_$x40 HTTP/[.0-9]*" 20[0-9]\""
and grep for it?
Previous: Jay SoffianNext: Jay Soffian
Message 5 of 17 in “t5540-http-push.sh: avoid non-portable grep -P”
  1. t5540-http-push.sh: avoid non-portable grep -PJay Soffian, Feb 26, 2009
  2. Junio C HamanoFeb 26, 2009
  3. Jay SoffianFeb 26, 2009
  4. Jay SoffianFeb 26, 2009
  5. Junio C HamanoFeb 26, 2009
  6. Jay SoffianFeb 26, 2009
  7. Junio C HamanoFeb 26, 2009
  8. Jay SoffianFeb 26, 2009
  9. t5540-http-push.sh: avoid non-portable grep -PJay Soffian, Feb 26, 2009
  10. Junio C HamanoFeb 26, 2009
  11. Jay SoffianFeb 26, 2009
  12. t5540-http-push.sh: avoid non-portable grep -PJay Soffian, Feb 26, 2009
  13. Brandon CaseyFeb 26, 2009
  14. Johannes SchindelinFeb 26, 2009
  15. Brandon CaseyFeb 27, 2009
  16. Junio C HamanoFeb 27, 2009
  17. t5540-http-push.sh: avoid non-portable grep -PJay Soffian, Feb 26, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.