Files
msd-core/.changeset/3491-nested-git-detection.md
Tom Boucher fb6633ceda fix(workflow): detect nested git worktree in new-project bootstrap (#3491)
The `has_git` boolean returned by `init new-project` and `init ingest-docs`
was derived from a shallow `pathExists(cwd, '.git')` check, so a subdirectory
of an existing repo reported `has_git: false`. The workflow then ran
`git init`, creating a nested `.git` inside the outer worktree and silently
diverting subsequent `gsd-sdk commit` calls into the nested repo.

Replace the shallow check with `git rev-parse --is-inside-work-tree`
semantics in both CJS (`get-shit-done/bin/lib/init.cjs`) and TS
(`sdk/src/query/init.ts`, `sdk/src/query/init-complex.ts`) handlers via a new
shared `gitWorktreeInfoInternal` helper, and expose `git_worktree_root` +
`in_nested_subdir` so the workflows can refuse `git init` inside an existing
worktree and warn that planning files will track to the outer repo.

Regression test: `tests/bug-3491-nested-git-worktree.test.cjs`.

Fixes #3491

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 09:11:59 -04:00

544 B

type, pr
type pr
Fixed 3491

/gsd-new-project and /gsd-ingest-docs no longer create a nested .git inside an existing worktree (#3491) — the shallow has_git: false check (which only looked for .git in the current directory) has been replaced with git rev-parse --is-inside-work-tree semantics. The init payload now surfaces git_worktree_root and in_nested_subdir so the workflows correctly skip git init when invoked from a subdirectory of an existing repo and warn that planning files will be tracked by the outer repo.