mirror of
https://github.com/stablyai/orca.git
synced 2026-09-22 16:02:32 +00:00
* Fix automatic branch rename for non-English git locales A gettext-enabled git (Homebrew git, most Linux distro gits) under a non-English locale translates every diagnostic, including the `fatal:` prefix, so Orca's stderr phrase parsers stop matching. The first-message branch auto-rename was the headline casualty: isNoUpstreamError missed the translated no-upstream error, branchHasUpstream failed closed to "has upstream", and the rename settled silently and permanently. - Force LC_ALL=C on all Orca-spawned machine-parsed git: the local prompt-guard env chokepoint, the three relay git spawn sites, and both local clone spawns (progress + failure-message parsing). User terminals are untouched. - Replace the boolean upstream check with a tri-state probe: rename proceeds only on a proven missing upstream; an unreadable probe now raises the rename-failed badge and retries instead of settling. Fixes #7808 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com> * Consolidate untranslated-git-locale into runner and relay primitives Replace the five per-site LC_ALL=C patches with one shared UNTRANSLATED_GIT_OUTPUT_ENV (LANGUAGE=en LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8) injected inside the git runner primitives (promptGuardGitEnv, gitSpawn, gitExecFileSync, gitExecFileAsyncBuffer) and a relay buildRelayGitEnv() helper, so every current and future machine-parsed git spawn is covered by construction — including the fs-handler-git-fallback sites the per-site approach missed. The UTF-8 English locale keeps a UTF-8 LC_CTYPE for hooks git spawns; LANGUAGE is pinned because gettext consults it before LC_ALL. WSL-routed git gets the same values as a shell assignment prefix built in resolveCommand, since spawn env cannot cross the wsl.exe boundary — closing the WSL gap the first pass accepted. Also scrub credential-bearing remote URLs from the probe-failed message surfaced on the worktree card. 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com> * Scrub credential-bearing URLs from clone failure messages --------- Co-authored-by: Brennan Benson <brennanbenson@Brennans-MacBook-Pro.local> Co-authored-by: Claude <noreply@anthropic.com>
17 lines
728 B
TypeScript
17 lines
728 B
TypeScript
/**
|
|
* Env pinning git subprocess output to untranslated English (issue #7808).
|
|
*
|
|
* Why: Orca parses git's stderr diagnostics and progress lines (e.g.
|
|
* isNoUpstreamError, clone progress/`fatal:` matching); a gettext-enabled git
|
|
* under a non-English locale translates even the `fatal:` prefix and silently
|
|
* breaks those parsers. An English UTF-8 locale rather than plain `C` keeps a
|
|
* UTF-8 LC_CTYPE for hooks git spawns (commit, push); a host without
|
|
* en_US.UTF-8 falls back to C, which still emits untranslated messages.
|
|
* LANGUAGE outranks LC_ALL in gettext's lookup, so it is pinned too.
|
|
*/
|
|
export const UNTRANSLATED_GIT_OUTPUT_ENV = {
|
|
LANGUAGE: 'en',
|
|
LC_ALL: 'en_US.UTF-8',
|
|
LANG: 'en_US.UTF-8'
|
|
} as const
|