MCPcopy Index your code
hub / github.com/go-git/go-git / checkRefFormat

Method checkRefFormat

internal/revision/parser.go:602–626  ·  view source on GitHub ↗

checkRefFormat ensure reference name follow rules defined here : https://git-scm.com/docs/git-check-ref-format

(token token, literal string, previousToken token, buffer string, endOfRef bool)

Source from the content-addressed store, hash-verified

600// checkRefFormat ensure reference name follow rules defined here :
601// https://git-scm.com/docs/git-check-ref-format
602func (p *Parser) checkRefFormat(token token, literal string, previousToken token, buffer string, endOfRef bool) error {
603 switch token {
604 case aslash, space, control, qmark, asterisk, obracket:
605 return &ErrInvalidRevision{fmt.Sprintf(`must not contains "%s"`, literal)}
606 }
607
608 switch {
609 case (token == dot || token == slash) && buffer == "":
610 return &ErrInvalidRevision{fmt.Sprintf(`must not start with "%s"`, literal)}
611 case previousToken == slash && endOfRef:
612 return &ErrInvalidRevision{`must not end with "/"`}
613 case previousToken == dot && endOfRef:
614 return &ErrInvalidRevision{`must not end with "."`}
615 case token == dot && previousToken == slash:
616 return &ErrInvalidRevision{`must not contains "/."`}
617 case previousToken == dot && token == dot:
618 return &ErrInvalidRevision{`must not contains ".."`}
619 case previousToken == slash && token == slash:
620 return &ErrInvalidRevision{`must not contains consecutively "/"`}
621 case (token == slash || endOfRef) && len(buffer) > 4 && buffer[len(buffer)-5:] == ".lock":
622 return &ErrInvalidRevision{"cannot end with .lock"}
623 }
624
625 return nil
626}

Callers 1

parseRefMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected