claude-code / mods /diff /hooks /git /fetch-diff /fetch-diff.ts
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
00080b0 verified
Raw
History Blame Contribute Delete
955 Bytes
import Probes from '../probes'
import Tiers from '../tiers'
import type Types from '../types'
/**
* One fetch of the session's pinned repository, as the built-in panel
* fetches; every git child names it so paths stay root-relative.
*
* Mid-merge, mid-rebase, mid-cherry-pick or mid-revert, or when git cannot
* answer, it is unavailable and the caller keeps what it had.
*
* @param deps the host: pinned git, the repository, the file probes
* @param mode what to compare against
* @returns the outcome
*/
export async function fetchDiff(
deps: Types.GitDeps,
mode: Types.BaseMode,
): Promise<Types.FetchOutcome> {
const isBusy = await Probes.isTransient(
deps.entryKindsOf,
deps.repository.gitDir,
)
if (isBusy) {
return { kind: 'unavailable' }
}
const context = Tiers.fetchContextOf(deps, mode)
const isBranch = mode === 'branch'
return isBranch ? Tiers.branchTier(context) : Tiers.workingTreeTier(context)
}