mirror of
https://github.com/stablyai/orca.git
synced 2026-09-23 00:02:29 +00:00
* fix(git): cache unsupported capabilities per host Old Git worktree, ref-search, and merge-tree fallbacks retried unsupported flags on recurring operations, flooding subprocess traces. Centralize capability probing per native, WSL, and SSH execution host, coalesce concurrent probes, and retry periodically for in-place Git upgrades. * fix(git): recognize real old-Git merge-tree rejection * test(git): enforce real binary compatibility matrix * fix(ci): preserve Git compatibility test ownership * fix(git): retain supported capability state
28 lines
1.0 KiB
TypeScript
28 lines
1.0 KiB
TypeScript
function getGitErrorText(error: unknown): string {
|
|
if (typeof error !== 'object' || error === null) {
|
|
return error instanceof Error ? error.message : String(error)
|
|
}
|
|
const values = ['message', 'stderr', 'stdout']
|
|
.map((key) => (error as Record<string, unknown>)[key])
|
|
.filter((value): value is string => typeof value === 'string')
|
|
return values.join('\n')
|
|
}
|
|
|
|
export function isUnsupportedMergeTreeWriteTreeError(error: unknown): boolean {
|
|
const output = getGitErrorText(error)
|
|
return (
|
|
/(?:unknown|invalid|unrecognized) option(?::|\s+)[`']?(?:--?)?write-tree[`']?(?:\s|$)/i.test(
|
|
output
|
|
) ||
|
|
/unknown rev [`']?--write-tree[`']?(?:\s|$)/i.test(output) ||
|
|
/usage:\s*git merge-tree\s+<base-tree>\s+<branch1>\s+<branch2>/i.test(output)
|
|
)
|
|
}
|
|
|
|
export function isUnsupportedMergeTreeMergeBaseError(error: unknown): boolean {
|
|
const output = getGitErrorText(error)
|
|
return /(?:unknown|invalid|unrecognized) option(?::|\s+)[`']?(?:--?)?merge-base[`']?(?:\s|$)/i.test(
|
|
output
|
|
)
|
|
}
|