Documentation
¶
Index ¶
- func CommitAllChanges(worktreeDir, commitMsg string) error
- func DeleteBranch(repoDir, branchName string) error
- func EnsureLocalBranch(repoDir, branchName string) error
- func GetCurrentBranch(dir string) string
- func PushBranch(repoDir, branchName string) (bool, error)
- func RemoveTaskWorktree(repoDir string, branchName string) error
- func RemoveTaskWorktreeKeepBranch(repoDir string, branchName string) error
- func Slugify(title string) string
- type PullRequest
- type TaskWorktree
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CommitAllChanges ¶
CommitAllChanges stages all changes in worktreeDir and commits them. If there is nothing to commit it is a no-op. The commit uses a local identity override so it succeeds even when no global git config exists.
func DeleteBranch ¶
DeleteBranch deletes a local branch. Returns nil if the branch does not exist.
func EnsureLocalBranch ¶
EnsureLocalBranch makes sure branchName exists as a local git ref. If the branch already exists locally it is a no-op; otherwise it attempts to fetch it from origin. Returns an error only when neither works.
func GetCurrentBranch ¶
GetCurrentBranch returns the current git branch name for the given directory.
func PushBranch ¶
PushBranch pushes branchName to origin. Returns false (with nil error) when no remote is configured, so callers can skip PR creation gracefully.
func RemoveTaskWorktree ¶
RemoveTaskWorktree removes a git worktree and its local branch.
func RemoveTaskWorktreeKeepBranch ¶
RemoveTaskWorktreeKeepBranch removes the worktree directory but keeps the branch intact. Use this when there is no remote to push to, so the work remains accessible via the branch ref.
Types ¶
type PullRequest ¶
PullRequest holds the result of creating a pull request.
func CreatePR ¶
func CreatePR(repoDir, branchName, title, body, baseBranch string) (*PullRequest, error)
CreatePR creates a pull request via the gh CLI. The branch must already be pushed. baseBranch is the PR target; when empty the repo's default branch is used. For dependent tasks pass the dependency's branch so PRs stack correctly.
type TaskWorktree ¶
type TaskWorktree struct {
BranchName string
Path string // absolute path to the worktree directory
}
TaskWorktree holds the result of creating a worktree for a task.
func CreateTaskWorktree ¶
func CreateTaskWorktree(repoDir string, taskID string, slug string, baseBranch string) (*TaskWorktree, error)
CreateTaskWorktree creates a git worktree for a task. Each worktree is an independent checkout on its own branch, so multiple agents can work in parallel without interfering with each other. The worktree lives under <repo>/.ogcode/worktrees/<branchName>. If baseBranch is non-empty the new branch is created from that branch instead of HEAD, enabling stacked PRs for dependent tasks.