refs: loosen restriction on wildcard "*" refspecs
commitcd377f45c9d06e8ab3e87d5a687ed22ab34e1c48
authorJacob Keller <jacob.keller@gmail.com>
Wed, 22 Jul 2015 21:05:33 +0000 (22 14:05 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 27 Jul 2015 16:21:31 +0000 (27 09:21 -0700)
tree6a159b29d6f32850e05efeaf5c8f07491cf83177
parent53a8555ee4db43534990126a14f0840f92aff898
refs: loosen restriction on wildcard "*" refspecs

Loosen restrictions on refspecs by allowing patterns that have a "*"
within a component instead of only as the whole component.

Remove the logic to accept a single "*" as a whole component from
check_refname_format(), and implement an extended form of that logic
in check_refname_component().  Pass the pointer to the flags argument
to the latter, as it has to clear REFNAME_REFSPEC_PATTERN bit when
it sees "*".

Teach check_refname_component() function to allow an asterisk "*"
only when REFNAME_REFSPEC_PATTERN is set in the flags, and drop the
bit after seeing a "*", to ensure that one side of a refspec
contains at most one asterisk.

This will allow us to accept refspecs such as `for/bar*:foo/baz*`.
Any refspec which functioned before shall continue functioning with
the new logic.

Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-check-ref-format.txt
refs.c
refs.h
t/t1402-check-ref-format.sh
t/t5511-refspec.sh