Skip to main content

create_worktree

Function create_worktree 

Source
pub fn create_worktree(
    repo_root: &Path,
    branch: &str,
    rebase_onto_main: bool,
) -> Result<WorktreeCreation, PawError>
Expand description

Creates a git worktree for branch.

If the branch already exists, checks it out in a new worktree. If the branch does not exist, creates it from HEAD with git worktree add -b. Returns both the worktree path and whether the branch was newly created, so the session can track which branches to delete on purge.

When rebase_onto_main is true and the target branch already exists in the local repository, the branch is rebased onto default_branch() BEFORE the existence check. The rebase resolves drift between supervisor work on main and live agent branches (MILESTONE.md drift item 48: agents otherwise commit on a stale baseline). On rebase conflict the function runs git rebase --abort and returns PawError::WorktreeError; the branch is left at its pre-rebase HEAD. When rebase_onto_main is false or the branch does not yet exist locally, the rebase step is skipped.