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

Method parseAt

internal/revision/parser.go:252–332  ·  view source on GitHub ↗

parseAt extract @ statements

()

Source from the content-addressed store, hash-verified

250
251// parseAt extract @ statements
252func (p *Parser) parseAt() (Revisioner, error) {
253 var tok, nextTok token
254 var lit, nextLit string
255 var err error
256
257 tok, _, err = p.scan()
258
259 if err != nil {
260 return nil, err
261 }
262
263 if tok != obrace {
264 p.unscan()
265
266 return Ref("HEAD"), nil
267 }
268
269 tok, lit, err = p.scan()
270
271 if err != nil {
272 return nil, err
273 }
274
275 nextTok, nextLit, err = p.scan()
276
277 if err != nil {
278 return nil, err
279 }
280
281 switch {
282 case tok == word && (lit == "u" || lit == "upstream") && nextTok == cbrace:
283 return AtUpstream{}, nil
284 case tok == word && lit == "push" && nextTok == cbrace:
285 return AtPush{}, nil
286 case tok == number && nextTok == cbrace:
287 n, _ := strconv.Atoi(lit)
288
289 return AtReflog{n}, nil
290 case tok == minus && nextTok == number:
291 n, _ := strconv.Atoi(nextLit)
292
293 t, _, err := p.scan()
294
295 if err != nil {
296 return nil, err
297 }
298
299 if t != cbrace {
300 return nil, &ErrInvalidRevision{s: `missing "}" in @{-n} structure`}
301 }
302
303 return AtCheckout{n}, nil
304 default:
305 p.unscan()
306
307 date := lit
308
309 for {

Callers 3

ParseMethod · 0.95

Calls 4

scanMethod · 0.95
unscanMethod · 0.95
RefTypeAlias · 0.85
ParseMethod · 0.45