devcontainers / devcontainers/cli

--mount-git-worktree-common-dir silently ignored when devcontainer.json sets a custom workspaceMount

Open
#1,243 1 comment 1 reaction 1 assignee Claimed by @v-Mathiyarasy View on GitHub
Dominant language
TypeScript
Stars
3k
Forks
457
Avg merge
13h 17m
Merged PRs (30d)
6

Description

### 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:

```js
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)

1. `git init main && (cd main && git commit --allow-empty -m init && git worktree add --relative-paths ../wt)`
2. Add `wt/.devcontainer/devcontainer.json` with a custom `workspaceMount`, e.g.:
```json
{ "image": "mcr.microsoft.com/devcontainers/base:debian",
"workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind",
"workspaceFolder": "/workspace" }
```
3. `devcontainer up --workspace-folder wt --mount-git-worktree-common-dir true`
4. `devcontainer exec --workspace-folder wt -- git -C /workspace status` → `fatal: not a git repository: (null)`
5. `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.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.