commitParents returns the parent commit SHAs of ref: zero for a root commit, one for an ordinary commit, and 2+ for a merge. It uses `rev-list --parents -n 1`, whose single line is " …" — the leading commit token is dropped, the rest are the parents. `rev-list` (unlike `re
(ctx context.Context, ref string)
| 507 | // looks like an option. An error yields nil so the caller treats it as "no |
| 508 | // unique base". |
| 509 | func (p *Provider) commitParents(ctx context.Context, ref string) []string { |
| 510 | out, err := p.runGit(ctx, "rev-list", "--parents", "-n", "1", "--end-of-options", ref) |
| 511 | if err != nil { |
| 512 | return nil |
| 513 | } |
| 514 | fields := strings.Fields(firstLine(out)) |
| 515 | if len(fields) <= 1 { |
| 516 | return nil // root commit (only the commit itself, no parents) or empty |
| 517 | } |
| 518 | return fields[1:] |
| 519 | } |
| 520 | |
| 521 | // firstLine returns the first non-empty trimmed line of git output, so a stray |
| 522 | // trailing newline or an unexpected second line never pollutes a resolved SHA. |
no test coverage detected