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 DeleteBranch(repoDir, branchName string, force bool) error
- 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 MergeBranch(repoDir, branchName string) error
- func PruneWorktrees(repoDir string) error
- func RemoveWorktree(repoDir, worktreePath string, force bool) 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 DeleteBranch ¶ added in v0.10.20
DeleteBranch deletes a local branch. If force is true, uses -D (force delete).
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 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 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}, {branch}, {session-id}. 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