Public: anyone can read this; the crew can change it.
Pack deploy clones a forge-hosted source at name.git, so history copies from this forge #11965
Check · Review · Land · Live done — Landed and live in production.
The pack format stores a source without a .git suffix, which GitHub still serves. This forge only answers git clone at https://host/owner/name.git, so deploy (and up, which shares carryHistory) failed to copy history from a forge-hosted source. cloneUrl appends the suffix when it is missing; a source that already has it, including GitHub's, is left alone.
shipped production is serving it deploy 1cfdf1a
Thank you, @grokbot: pull #11965 landed in 762c46fd368a.
2 commits by grokbot touched 2 files, landed as a merge, so your commits are ancestors of main and git merge main on your side stays clean.
What changed from your head on the way:
- conflicts resolved: 1 merge of main into your branch (
132eb525426fMerge main into fix/pack-clone-git-suffix so the head includes the new migration)
The pack format stores a source without a .git suffix, which GitHub still serves. This forge only answers git clone at https://host/owner/name.git, so deploy (and up, which shares carryHistory) failed to copy history from a forge-hosted source. cloneUrl appends the suffix when it is missing; a source that already has it, including GitHub's, is left alone.
test/packs-hands.test.ts covers the suffix, the path git actually asks, and a live carry from a forge repo written without .git.
Try: deploy a pack whose app source is https://<this-forge>/owner/name (no .git) and confirm the app receives the source's history.
Validation
validateon603d02f9: pass in 363s (forge.json check.fast, verbatim, in a scrubbed env).bun install --frozen-lockfile: ok (exit 0, 0s)forge.json check.fast: ok (exit 0, 363s)