Documentation
¶
Overview ¶
Package git provides git worktree operations for agent-deck
Index ¶
- func BranchExists(repoDir, branchName string) bool
- func CreateWorktree(repoDir, worktreePath, branchName string) error
- func CreateWorktreeWithSetup(repoDir, worktreePath, branchName string, stdout, stderr io.Writer) (setupErr error, err error)
- func DeleteBranch(repoDir, branchName string, force bool) error
- func FindWorktreeSetupScript(repoDir string) string
- func GeneratePathID() string
- func GenerateWorktreePath(repoDir, branchName, location string) string
- func GetCurrentBranch(dir string) (string, error)
- func GetDefaultBranch(repoDir string) (string, error)
- func GetMainWorktreePath(dir string) (string, error)
- func GetRepoRoot(dir string) (string, error)
- func GetWorktreeBaseRoot(dir string) (string, error)
- func GetWorktreeForBranch(repoDir, branchName string) (string, error)
- func HasUncommittedChanges(dir string) (bool, error)
- func IsGitRepo(dir string) bool
- func IsWorktree(dir string) bool
- func ListBranchCandidates(repoDir string) ([]string, error)
- func MergeBranch(repoDir, branchName string) error
- func PruneWorktrees(repoDir string) error
- func RemoveWorktree(repoDir, worktreePath string, force bool) error
- func RunWorktreeSetupScript(scriptPath, repoDir, worktreePath string, stdout, stderr io.Writer) error
- func SanitizeBranchName(name string) string
- func ValidateBranchName(name string) error
- func WorktreePath(opts WorktreePathOptions) string
- type Worktree
- type WorktreePathOptions
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BranchExists ¶
BranchExists checks if a branch exists in the repository
func CreateWorktree ¶
CreateWorktree creates a new git worktree at worktreePath for the given branch If the branch doesn't exist, it will be created
func CreateWorktreeWithSetup ¶ added in v1.3.1
func CreateWorktreeWithSetup(repoDir, worktreePath, branchName string, stdout, stderr io.Writer) (setupErr error, err error)
CreateWorktreeWithSetup creates a worktree and runs the setup script if present. Setup script failure is non-fatal: the worktree is still valid. Output is streamed to the provided writers.
func DeleteBranch ¶ added in v0.10.20
DeleteBranch deletes a local branch. If force is true, uses -D (force delete).
func FindWorktreeSetupScript ¶ added in v1.3.1
FindWorktreeSetupScript returns the path to the worktree setup script if one exists at <repoDir>/.agent-deck/worktree-setup.sh, or empty string.
func GeneratePathID ¶ added in v0.10.10
func GeneratePathID() string
GeneratePathID returns an 8-character random hex string for path uniqueness. Used to provide a unique identifier in worktree path templates via {session-id}.
func GenerateWorktreePath ¶
GenerateWorktreePath generates a worktree directory path based on the repository directory, branch name, and location strategy. Location "subdirectory" places worktrees under <repo>/.worktrees/<branch>. Location "sibling" (or empty) places worktrees as <repo>-<branch> alongside the repo. A custom path (containing "/" or starting with "~") places worktrees at <path>/<repo_name>/<branch>.
func GetCurrentBranch ¶
GetCurrentBranch returns the current branch name for the repository at dir
func GetDefaultBranch ¶ added in v0.10.20
GetDefaultBranch returns the default branch name (e.g. "main" or "master") for the repo
func GetMainWorktreePath ¶
GetMainWorktreePath returns the path to the main worktree (original clone)
func GetRepoRoot ¶
GetRepoRoot returns the root directory of the git repository containing dir
func GetWorktreeBaseRoot ¶ added in v0.17.0
GetWorktreeBaseRoot returns the root of the main repository, resolving through worktrees if necessary. When called from a normal repo, it behaves identically to GetRepoRoot. When called from within a worktree, it follows --git-common-dir back to the main repo root, preventing worktree nesting.
func GetWorktreeForBranch ¶
GetWorktreeForBranch returns the worktree path for a given branch, if any
func HasUncommittedChanges ¶ added in v0.10.20
HasUncommittedChanges checks if the repository at dir has uncommitted changes
func IsWorktree ¶
IsWorktree checks if the given directory is a git worktree (not the main repo)
func ListBranchCandidates ¶ added in v0.27.0
ListBranchCandidates returns unique branch names from local branches and the default remote, normalized to plain branch names without a remote prefix.
func MergeBranch ¶ added in v0.10.20
MergeBranch merges the given branch into the current branch of the repository
func PruneWorktrees ¶ added in v0.10.20
PruneWorktrees removes stale worktree references
func RemoveWorktree ¶
RemoveWorktree removes a worktree from the repository If force is true, it will remove even if there are uncommitted changes
func RunWorktreeSetupScript ¶ added in v1.3.1
func RunWorktreeSetupScript(scriptPath, repoDir, worktreePath string, stdout, stderr io.Writer) error
RunWorktreeSetupScript executes the setup script with AGENT_DECK_REPO_ROOT and AGENT_DECK_WORKTREE_PATH environment variables set. Working directory is set to worktreePath. Output is streamed to the provided writers.
func SanitizeBranchName ¶
SanitizeBranchName converts a string to a valid branch name
func ValidateBranchName ¶
ValidateBranchName validates that a branch name follows git's naming rules
func WorktreePath ¶ added in v0.10.10
func WorktreePath(opts WorktreePathOptions) string
WorktreePath generates a worktree path. If opts.Template is set, it expands the template with variables:
- {repo-name}, {repo-root}, {session-id}
- {branch}: sanitized (human-friendly, may collide)
- {branch-escaped}: URL-escaped (collision-resistant, reversible)
Unknown variables like {foo} are left as-is in the resolved path. Falls back to location-based strategy using opts.Location when template is empty or RepoDir is invalid.
Types ¶
type Worktree ¶
type Worktree struct {
Path string // Filesystem path to the worktree
Branch string // Branch name checked out in this worktree
Commit string // HEAD commit SHA
Bare bool // Whether this is the bare repository
}
Worktree represents a git worktree
func ListWorktrees ¶
ListWorktrees returns all worktrees for the repository at repoDir