Summary
--mount-git-worktree-common-dir (added in #1127) has no effect when the devcontainer.json defines a custom workspaceMount. The worktree common-dir bind mount is never added, so in-container git fails with fatal: not a git repository for any git worktree whose devcontainer uses a custom workspaceMount.
Root cause
In src/spec-node/utils.ts (getWorkspaceConfiguration, ~L386) the entire worktree detection + common-dir mount block is guarded by:
if (workspace && (!workspaceFolder || !('workspaceMount' in config))) { ... }
When workspaceMount is present, the block is skipped — the .git file is never read, the common dir is never resolved, and no mount is added. (Flagged as a possible oversight by @kapouer in #796, Mar 2026.)
Reproduction (CLI 0.82.0, git 2.52)
git init main && (cd main && git commit --allow-empty -m init && git worktree add --relative-paths ../wt)
- Add
wt/.devcontainer/devcontainer.json with a custom workspaceMount, e.g.:
{ "image": "mcr.microsoft.com/devcontainers/base:debian",
"workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind",
"workspaceFolder": "/workspace" }
devcontainer up --workspace-folder wt --mount-git-worktree-common-dir true
devcontainer exec --workspace-folder wt -- git -C /workspace status → fatal: not a git repository: (null)
docker inspect on the container shows only the workspace bind mount; the worktree common dir was not mounted.
Removing workspaceMount makes it work — confirming the guard is the cause.
Expected
The common-dir mount should be computed and added even when a custom workspaceMount is set, by resolving the mount target relative to the configured workspaceMount target / workspaceFolder. This is the common case for monorepos that mount a parent directory and set workspaceFolder to a subpath. Relates to #796.
Workaround
Adding the common dir manually via a mounts entry (binding the main repo's .git to the path the worktree's .git file resolves to inside the container) restores in-container git — matching the maintainer's earlier suggestion in #796.
Summary
--mount-git-worktree-common-dir(added in #1127) has no effect when thedevcontainer.jsondefines a customworkspaceMount. The worktree common-dir bind mount is never added, so in-container git fails withfatal: not a git repositoryfor any git worktree whose devcontainer uses a customworkspaceMount.Root cause
In
src/spec-node/utils.ts(getWorkspaceConfiguration, ~L386) the entire worktree detection + common-dir mount block is guarded by:When
workspaceMountis present, the block is skipped — the.gitfile is never read, the common dir is never resolved, and no mount is added. (Flagged as a possible oversight by @kapouer in #796, Mar 2026.)Reproduction (CLI 0.82.0, git 2.52)
git init main && (cd main && git commit --allow-empty -m init && git worktree add --relative-paths ../wt)wt/.devcontainer/devcontainer.jsonwith a customworkspaceMount, e.g.:{ "image": "mcr.microsoft.com/devcontainers/base:debian", "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind", "workspaceFolder": "/workspace" }devcontainer up --workspace-folder wt --mount-git-worktree-common-dir truedevcontainer exec --workspace-folder wt -- git -C /workspace status→fatal: not a git repository: (null)docker inspecton the container shows only the workspace bind mount; the worktree common dir was not mounted.Removing
workspaceMountmakes it work — confirming the guard is the cause.Expected
The common-dir mount should be computed and added even when a custom
workspaceMountis set, by resolving the mount target relative to the configuredworkspaceMounttarget /workspaceFolder. This is the common case for monorepos that mount a parent directory and setworkspaceFolderto a subpath. Relates to #796.Workaround
Adding the common dir manually via a
mountsentry (binding the main repo's.gitto the path the worktree's.gitfile resolves to inside the container) restores in-container git — matching the maintainer's earlier suggestion in #796.