utils/git/git_diff_utils library

Classes

GitDiffResult
Result of a git diff operation.
GitDiffStats
Git diff aggregate statistics.
GitFileStatus
Git file status (tracked vs untracked).
GitRepoState
Git repository state snapshot.
NumstatResult
Result from parseGitNumstat.
ParsedRepository
Parsed git remote.
PerFileStats
Per-file diff statistics.
PreservedGitState
Preserved git state for issue submission.
PrStatus
Pull request status.
StructuredPatchHunk
A structured patch hunk.
ToolUseDiff
Structured diff for a single file (tool use).
UntrackedFile
An untracked file with content.

Enums

PrReviewState
PR review state.

Functions

clearRepositoryCaches() → void
Clear cached repository data.
deriveReviewState({required bool isDraft, required String reviewDecision}) PrReviewState
Derive review state from GitHub API values.
detectCurrentRepository({String? cwd}) Future<String?>
Detect the current repository (github.com only, "owner/repo").
detectCurrentRepositoryWithHost({String? cwd}) Future<ParsedRepository?>
Detect current repository including host.
dirIsInGitRepo(String cwd) Future<bool>
Check if directory is in a git repo.
fetchGitDiff({String? cwd}) Future<GitDiffResult?>
Fetch git diff stats comparing working tree to HEAD. Returns null if not in a git repo or during transient git states.
fetchGitDiffHunks({String? cwd}) Future<Map<String, List<StructuredPatchHunk>>>
Fetch git diff hunks on-demand.
fetchPrStatus({String? cwd}) Future<PrStatus?>
Fetch PR status for the current branch using gh pr view.
fetchSingleFileGitDiff(String absoluteFilePath) Future<ToolUseDiff?>
Fetch a structured diff for a single file against the merge base.
findCanonicalGitRoot(String startPath) String?
Find the canonical git root, resolving through worktrees.
findGitRoot(String startPath) String?
Find the git root by walking up the directory tree. Looks for a .git directory or file (worktrees/submodules use a file).
findRemoteBase({String? cwd}) Future<String?>
Find the best remote branch to use as a base.
getBranch({String? cwd}) Future<String>
Get current branch name.
getCachedRepository({String? cwd}) String?
Return cached repository ("owner/name") for github.com, or null.
getChangedFiles({String? cwd}) Future<List<String>>
Get a list of changed files (porcelain output).
getDefaultBranch({String? cwd}) Future<String>
Get the default branch (main/master/etc).
getFileStatus({String? cwd}) Future<GitFileStatus>
Get file status (tracked vs untracked).
getGitDir(String cwd) Future<String?>
Resolve the .git directory (handles worktrees).
getGithubRepo({String? cwd}) Future<String?>
Get the GitHub repo in "owner/repo" format.
getGitState({String? cwd}) Future<GitRepoState?>
Get the full git repository state.
getHead({String? cwd}) Future<String>
Get HEAD commit hash.
getIsClean({String? cwd, bool ignoreUntracked = false}) Future<bool>
Check if the working tree is clean.
getIsGit({String? cwd}) Future<bool>
Check if cwd is inside a git repository.
getIsHeadOnRemote({String? cwd}) Future<bool>
Check if HEAD is on a remote-tracking branch.
getRemoteUrl({String? cwd}) Future<String?>
Get the remote URL.
getRepoRemoteHash({String? cwd}) Future<String?>
Returns a SHA256 hash (first 16 chars) of the normalized git remote URL.
gitExe() String
hasUnpushedCommits({String? cwd}) Future<bool>
Check if there are unpushed commits.
isAtGitRoot({String? cwd}) Future<bool>
Check if the cwd is at the git root.
isCurrentDirectoryBareGitRepo({String? cwd}) bool
Check if cwd looks like a bare git repo (security check).
isShallowClone({String? cwd}) Future<bool>
Check if in a shallow clone.
normalizeGitRemoteUrl(String url) String?
Normalise a git remote URL to a canonical form for hashing. Converts SSH and HTTPS URLs to: host/owner/repo (lowercase, no .git).
parseGitDiff(String stdout) Map<String, List<StructuredPatchHunk>>
Parse unified diff output into per-file hunks.
parseGitHubRepository(String input) String?
Parse a GitHub repository string or URL.
parseGitNumstat(String stdout) NumstatResult
Parse git diff --numstat output.
parseGitRemote(String input) ParsedRepository?
Parse a git remote URL into host, owner, and name.
parseShortstat(String stdout) GitDiffStats?
Parse git diff --shortstat output.
preserveGitStateForIssue({String? cwd}) Future<PreservedGitState?>
Preserve git state for issue submission.
resolveCanonicalGitRoot(String gitRoot) String
Resolve a git root to the canonical main repository root. For worktrees follows .git file -> gitdir: -> commondir chain.
stashToCleanState({String? cwd, String? message}) Future<bool>
Stash all changes (including untracked) to return git to a clean state.