W dniu 21.09.2016 o 19:58, Ævar Arnfjörð Bjarmason pisze:
> On Wed, Sep 21, 2016 at 7:09 PM, Jakub Narębski <[email protected]> wrote:
>> W dniu 21.09.2016 o 13:44, Ævar Arnfjörð Bjarmason napisał:
>>> + (?<!-) # see strbuf_check_tag_ref(). Tags can't start with -
>>> + [A-Za-z0-9.-]+
>>> + (?!\.) # refs can't end with ".", see check_refname_format()
>>
>> If we can assume that tag name is at least two characters (instead of
>> at least one character), we could get rid of those extended regexp
>> lookaround assertions:
>>
>> (?<!pattern) - zero-width negative lookbehind assertion
>> (?!pattern) - zero-width negative lookahead assertion
>>
>> That is:
>>
>> + [A-Za-z0-9.] # see strbuf_check_tag_ref(). Tags can't start
>> with -
>> + [A-Za-z0-9.-]*
>> + [A-Za-z0-9-] # refs can't end with ".", see
>> check_refname_format()
>
> Why get rid of them? I'm all for improving the regex, there's bound to
> be lots of bugs in it, but since it's perl we can freely use its
> extended features.
Ah, all right. I was wondering how zero width assertions / patterns
interact with each other, but zero-width negative lookaround assertions
are really quite simple.
>
>> Also, the canonical documentation for what is allowed in refnames
>> is git-check-ref-format(1)... though it does not look like it includes
>> "tags cannot start with '-'".
>
> Yeah, looks like that manpage needs to be patched.
Right.
>
>> Anyway, perhaps 'is it valid refname' could be passed to a subroutine,
>> or a named regexp (which might be more involved, like disallowing two
>> consecutive dots, e.g. "(?!.*\.{2})" at beginning).
I wonder if rules for valid tag name can be described in extended
regexp, and if it is, how readable would it be.
Regards,
--
Jakub Narębski