Change check_refname_format() to reject unnormalized refnames

Since much of the infrastructure does not work correctly with
unnormalized refnames, change check_refname_format() to reject them.

Similarly, change "git check-ref-format" to reject unnormalized
refnames by default.  But add an option --normalize, which causes "git
check-ref-format" to normalize the refname before checking its format,
and print the normalized refname.  This is exactly the behavior of the
old --print option, which is retained but deprecated.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Michael Haggerty
2011-09-15 23:10:30 +02:00
committed by Junio C Hamano
parent a5e4ec063a
commit a40e6fb67a
5 changed files with 49 additions and 28 deletions

3
refs.c
View File

@ -908,9 +908,6 @@ int check_refname_format(const char *ref, int flags)
int component_len, component_count = 0;
while (1) {
while (*ref == '/')
ref++; /* tolerate leading and repeated slashes */
/* We are at the start of a path component. */
component_len = check_refname_component(ref);
if (component_len < 0) {