.forge/issues/f16cf2b4-6ebf-4fbf-b78f-2550f44bd76b/issue.md 1.9 KiB 28 lines Raw

id: f16cf2b4-6ebf-4fbf-b78f-2550f44bd76b title: Export duplicates the git runner, shares the 10s timeout, and round-trips paths through UTF-8 state: closed labels:


export_dumb_repo re-implements the git subprocess plumbing (~75 lines) instead of reusing run_git, and runs the export under the same 10 s GIT_TIMEOUT.

Problems:

  1. Second full traversal under a 10 s cap. snapshot() already reads the whole history for git bundle create under GIT_TIMEOUT. The export is a second full pass with the same 10 s budget, so a repo whose bundle takes ~7 s now exceeds the cap in the export step and fails the build with GitError::Timeout("git clone/update-server-info") — a regression for large repos that deployed fine before #54.
  2. Duplicated runner. run_plain_git copies run_git's spawn / stdout-stderr reader threads / poll loop / kill-on-timeout. Every future fix must be made twice; the two already differ in error text and in the --git-dir handling.
  3. Lossy path round-trip. canonicalize() -> to_string_lossy() -> OsString converts non-UTF-8 paths into replacement characters, so the clone target can be a different path than intended.

Fix:

Acceptance:

view raw