package name import "strings" // Normalize collapses slashes according to what Git wants // then validates the normalized name. func Normalize(name string, options Options) (string, error) { normalized := collapseSlashes(name) err := validate(normalized, options.flags()) if err != nil { return "", err } return normalized, nil } func collapseSlashes(name string) string { if name == "" { return "" } var builder strings.Builder builder.Grow(len(name)) prev := byte('/') for i := range len(name) { ch := name[i] if prev == '/' && ch == '/' { continue } builder.WriteByte(ch) prev = ch } return builder.String() }