(ctx context.Context, gitDir string, headOID string, fn func(string))
| 294 | return err |
| 295 | } |
| 296 | parent := filepath.Dir(cfg.GitDir) |
| 297 | if err := os.MkdirAll(parent, 0o755); err != nil { |
| 298 | return err |
| 299 | } |
| 300 | |
| 301 | // Strip credentials from the CLI-visible URL; pass them via a credential helper |
| 302 | // so they don't appear in ps output. |
| 303 | safeURL, credHelper, err := credentialEnv(cfg.RemoteURL) |
| 304 | if err != nil { |
| 305 | return err |
| 306 | } |
| 307 | env := append([]string{}, extraEnv...) |
| 308 | env = append(env, credHelper...) |
| 309 | |
| 310 | var target string |
| 311 | attempt := func() error { |
| 312 | var err error |
| 313 | // A failed git clone can leave files in its destination, so every retry |
| 314 | // gets a fresh directory rather than risking a false "already exists". |
| 315 | target, err = os.MkdirTemp(parent, ".clone-*") |
| 316 | if err != nil { |
| 317 | return fmt.Errorf("mktemp clone dir: %w", err) |
| 318 | } |
| 319 | sourceRef := strings.TrimSpace(cfg.Branch) |
| 320 | branch := sourceRef |
| 321 | if after, ok := strings.CutPrefix(sourceRef, "refs/heads/"); ok { |
| 322 | branch = after |
| 323 | } else if strings.HasPrefix(sourceRef, "refs/") { |
| 324 | branch = "" |
no test coverage detected