git

package
v1.26.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 22, 2026 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Overview

Package git wraps git commands and helpers used by lazyworktree.

Index

Constants

This section is empty.

Variables

View Source
var LookupPath = exec.LookPath

LookupPath is used to find executables in PATH. It's exposed as a package variable so tests can mock it and avoid depending on system binaries being installed.

Functions

This section is empty.

Types

type NotifyFn

type NotifyFn func(message string, severity string)

NotifyFn receives ongoing notifications.

type NotifyOnceFn

type NotifyOnceFn func(key string, message string, severity string)

NotifyOnceFn reports deduplicated notification messages.

type Service

type Service struct {
	// contains filtered or unexported fields
}

Service orchestrates git and helper commands for the UI.

func NewService

func NewService(notify NotifyFn, notifyOnce NotifyOnceFn) *Service

NewService constructs a Service and sets up concurrency limits.

func (*Service) ApplyGitPager added in v1.22.0

func (s *Service) ApplyGitPager(ctx context.Context, diff string) string

ApplyGitPager pipes diff output through the configured git pager when available.

func (*Service) BuildThreePartDiff

func (s *Service) BuildThreePartDiff(ctx context.Context, path string, cfg *config.AppConfig) string

BuildThreePartDiff assembles a comprehensive diff showing staged, modified, and untracked sections. The output is truncated according to cfg.MaxDiffChars and cfg.MaxUntrackedDiffs settings. Part 1: Staged changes (git diff --cached) Part 2: Unstaged changes (git diff) Part 3: Untracked files (limited by MaxUntrackedDiffs)

func (*Service) CherryPickCommit added in v1.12.0

func (s *Service) CherryPickCommit(ctx context.Context, commitSHA, targetPath string) (bool, error)

CherryPickCommit applies a commit to a target worktree. Returns true on success, false on failure (including conflicts).

func (*Service) CreateWorktreeFromPR added in v1.2.0

func (s *Service) CreateWorktreeFromPR(ctx context.Context, prNumber int, remoteBranch, localBranch, targetPath string) bool

CreateWorktreeFromPR creates a worktree from a PR's remote branch. It fetches the PR head commit, creates a worktree at that commit with a proper branch, and sets up branch tracking configuration (replicating what gh/glab pr checkout does).

func (*Service) DetectHost added in v1.24.0

func (s *Service) DetectHost(ctx context.Context) string

DetectHost detects the git host (github, gitlab, or unknown)

func (*Service) ExecuteCommands

func (s *Service) ExecuteCommands(ctx context.Context, cmdList []string, cwd string, env map[string]string) error

ExecuteCommands runs provided shell commands sequentially inside the given working directory.

func (*Service) FetchAllOpenIssues added in v1.20.0

func (s *Service) FetchAllOpenIssues(ctx context.Context) ([]*models.IssueInfo, error)

FetchAllOpenIssues fetches all open issues and returns them as a slice.

func (*Service) FetchAllOpenPRs added in v1.2.0

func (s *Service) FetchAllOpenPRs(ctx context.Context) ([]*models.PRInfo, error)

FetchAllOpenPRs fetches all open PRs/MRs and returns them as a slice.

func (*Service) FetchCIStatus

func (s *Service) FetchCIStatus(ctx context.Context, prNumber int, branch string) ([]*models.CICheck, error)

FetchCIStatus fetches CI check statuses for a PR from GitHub or GitLab.

func (*Service) FetchPRForWorktree added in v1.13.0

func (s *Service) FetchPRForWorktree(ctx context.Context, worktreePath string) *models.PRInfo

FetchPRForWorktree fetches PR info for a specific worktree by running gh/glab in that directory. This correctly detects PRs even when the local branch name differs from the remote branch. Maintains backward compatibility by swallowing errors.

func (*Service) FetchPRForWorktreeWithError added in v1.24.0

func (s *Service) FetchPRForWorktreeWithError(ctx context.Context, worktreePath string) (*models.PRInfo, error)

FetchPRForWorktreeWithError fetches PR info and returns detailed error information.

func (*Service) FetchPRMap

func (s *Service) FetchPRMap(ctx context.Context) (map[string]*models.PRInfo, error)

FetchPRMap gathers PR/MR information via supported host APIs (GitHub or GitLab). Returns a map keyed by branch name to PRInfo. Detects the host automatically based on the repository's remote URL.

func (*Service) GetCommitFiles added in v1.17.0

func (s *Service) GetCommitFiles(ctx context.Context, commitSHA, worktreePath string) ([]models.CommitFile, error)

GetCommitFiles returns the list of files changed in a specific commit.

func (*Service) GetCurrentBranch added in v1.26.0

func (s *Service) GetCurrentBranch(ctx context.Context) (string, error)

GetCurrentBranch returns the current branch name from the current working directory. Returns an error if not in a git repository or if HEAD is detached.

func (*Service) GetMainBranch

func (s *Service) GetMainBranch(ctx context.Context) string

GetMainBranch returns the main branch name for the current repository.

func (*Service) GetMainWorktreePath

func (s *Service) GetMainWorktreePath(ctx context.Context) string

GetMainWorktreePath returns the path of the main worktree.

func (*Service) GetMergedBranches added in v1.22.0

func (s *Service) GetMergedBranches(ctx context.Context, baseBranch string) []string

GetMergedBranches returns local branches that have been merged into the specified base branch.

func (*Service) GetWorktrees

func (s *Service) GetWorktrees(ctx context.Context) ([]*models.WorktreeInfo, error)

GetWorktrees parses git worktree metadata and returns the list of worktrees. This method concurrently fetches status information for each worktree to improve performance. The first worktree in the list is marked as the main worktree.

func (*Service) IsGitHubOrGitLab added in v1.24.0

func (s *Service) IsGitHubOrGitLab(ctx context.Context) bool

IsGitHubOrGitLab returns true if the repository is connected to GitHub or GitLab.

func (*Service) RenameWorktree

func (s *Service) RenameWorktree(ctx context.Context, oldPath, newPath, oldBranch, newBranch string) bool

RenameWorktree attempts to move and rename branches for a worktree migration.

func (*Service) ResolveRepoName

func (s *Service) ResolveRepoName(ctx context.Context) string

ResolveRepoName resolves the repository name using various methods. ResolveRepoName returns the repository identifier for caching purposes.

func (*Service) RunCommandChecked

func (s *Service) RunCommandChecked(ctx context.Context, args []string, cwd, errorPrefix string) bool

RunCommandChecked runs the provided git command and reports failures via notify callbacks.

func (*Service) RunGit

func (s *Service) RunGit(ctx context.Context, args []string, cwd string, okReturncodes []int, strip, silent bool) string

RunGit executes a git command and optionally trims its output.

func (*Service) SetGitPager added in v1.22.0

func (s *Service) SetGitPager(pager string)

SetGitPager sets the diff formatter/pager command and enables/disables based on empty string.

func (*Service) SetGitPagerArgs added in v1.22.0

func (s *Service) SetGitPagerArgs(args []string)

SetGitPagerArgs sets additional arguments used when formatting diffs.

func (*Service) UseGitPager added in v1.22.0

func (s *Service) UseGitPager() bool

UseGitPager reports whether diff pager integration is enabled.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL