| 388 | } |
| 389 | |
| 390 | func git(ctx context.Context, dir string, args ...string) error { |
| 391 | cmd := exec.CommandContext(ctx, "git", append([]string{"-C", dir}, args...)...) |
| 392 | var stderr bytes.Buffer |
| 393 | cmd.Stderr = &stderr |
| 394 | if err := cmd.Run(); err != nil { |
| 395 | if msg := strings.TrimSpace(stderr.String()); msg != "" { |
| 396 | return fmt.Errorf("%w: %s", err, msg) |
| 397 | } |
| 398 | return err |
| 399 | } |
| 400 | return nil |
| 401 | } |
| 402 | |
| 403 | // gitOutput runs a git command in dir and returns its trimmed stdout. |
| 404 | func gitOutput(ctx context.Context, dir string, args ...string) (string, error) { |