MCPcopy
hub / github.com/go-git/go-git / Parse

Method Parse

internal/revision/parser.go:138–179  ·  view source on GitHub ↗

Parse explode a revision string into revisioner chunks

()

Source from the content-addressed store, hash-verified

136
137// Parse explode a revision string into revisioner chunks
138func (p *Parser) Parse() ([]Revisioner, error) {
139 var rev Revisioner
140 var revs []Revisioner
141 var tok token
142 var err error
143
144 for {
145 tok, _, err = p.scan()
146
147 if err != nil {
148 return nil, err
149 }
150
151 switch tok {
152 case at:
153 rev, err = p.parseAt()
154 case tilde:
155 rev, err = p.parseTilde()
156 case caret:
157 rev, err = p.parseCaret()
158 case colon:
159 rev, err = p.parseColon()
160 case eof:
161 err = p.validateFullRevision(&revs)
162
163 if err != nil {
164 return []Revisioner{}, err
165 }
166
167 return revs, nil
168 default:
169 p.unscan()
170 rev, err = p.parseRef()
171 }
172
173 if err != nil {
174 return []Revisioner{}, err
175 }
176
177 revs = append(revs, rev)
178 }
179}
180
181// validateFullRevision ensures all revisioner chunks make a valid revision
182func (p *Parser) validateFullRevision(chunks *[]Revisioner) error {

Callers 11

FuzzParserFunction · 0.95
ResolveRevisionMethod · 0.45
defaultSignatureFunction · 0.45
invalidSignatureFunction · 0.45
TestExamplesFunction · 0.45
buildIndexMethod · 0.45
mainFunction · 0.45
parseAtMethod · 0.45

Calls 8

scanMethod · 0.95
parseAtMethod · 0.95
parseTildeMethod · 0.95
parseCaretMethod · 0.95
parseColonMethod · 0.95
validateFullRevisionMethod · 0.95
unscanMethod · 0.95
parseRefMethod · 0.95

Tested by 7

FuzzParserFunction · 0.76
defaultSignatureFunction · 0.36
invalidSignatureFunction · 0.36
TestExamplesFunction · 0.36