MCPcopy Index your code
hub / github.com/docker/docker-agent / setupWorktree

Method setupWorktree

cmd/root/run.go:581–622  ·  view source on GitHub ↗

setupWorktree creates the git worktree requested by --worktree or --worktree-pr, returning nil when neither was given. The returned worktree (when non-nil) becomes the session's working directory and is cleaned up when an interactive run ends.

(ctx context.Context, wd string)

Source from the content-addressed store, hash-verified

579// (when non-nil) becomes the session's working directory and is cleaned up
580// when an interactive run ends.
581func (f *runExecFlags) setupWorktree(ctx context.Context, wd string) (*worktree.Worktree, error) {
582 switch {
583 case f.worktreePR != "":
584 wt, err := worktree.CreatePR(ctx, wd, f.worktreePR)
585 if err != nil {
586 switch {
587 case errors.Is(err, worktree.ErrNotGitRepository):
588 return nil, fmt.Errorf("--worktree-pr requires %s to be inside a git repository", wd)
589 case errors.Is(err, worktree.ErrInvalidPRRef):
590 return nil, fmt.Errorf("invalid --worktree-pr value: %w", err)
591 case errors.Is(err, worktree.ErrGHNotFound):
592 return nil, fmt.Errorf("--worktree-pr requires the GitHub CLI: %w", err)
593 default:
594 return nil, err
595 }
596 }
597 return wt, nil
598
599 case f.worktree:
600 name := f.worktreeName
601 if name == worktreeAutoName {
602 name = ""
603 }
604 wt, err := worktree.Create(ctx, wd, name, worktree.WithBase(f.worktreeBase))
605 if err != nil {
606 switch {
607 case errors.Is(err, worktree.ErrNotGitRepository):
608 return nil, fmt.Errorf("--worktree requires %s to be inside a git repository", wd)
609 case errors.Is(err, worktree.ErrInvalidName):
610 return nil, fmt.Errorf("invalid --worktree name: %w", err)
611 case errors.Is(err, worktree.ErrInvalidBase):
612 return nil, fmt.Errorf("invalid --worktree-base: %w", err)
613 default:
614 return nil, err
615 }
616 }
617 return wt, nil
618
619 default:
620 return nil, nil
621 }
622}
623
624// cleanupWorktree removes a worktree created for an interactive run once it
625// ends. A clean worktree (no uncommitted changes, untracked files, or new

Callers 1

loadTeamInWorktreeMethod · 0.95

Calls 3

CreatePRFunction · 0.92
CreateFunction · 0.92
WithBaseFunction · 0.92

Tested by

no test coverage detected