Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,15 @@
# skip it so a fresh OSS clone needs no credentials (#1443). Maintainers
# opt in — see CLAUDE.md → "Development Skills".
update = none
fetchRecurseSubmodules = true
# `on-demand` (not `true`): `true` unconditionally tries to recurse-fetch
# this submodule on every `git fetch`/`git pull`, even when it was never
# checked out — which fails with "Could not access submodule '.claude'"
# for anyone (or any self-hosting agent) without trinity-dev credentials.
# `on-demand` still auto-updates it for maintainers who HAVE it checked
# out (a submodule-bump commit triggers the fetch), matching the
# documented "handles git pull automatically" behavior in CLAUDE.md —
# it just stops trying for everyone who doesn't have it initialized.
fetchRecurseSubmodules = on-demand
[submodule "src/backend/enterprise"]
path = src/backend/enterprise
url = git@github.com:Abilityai/trinity-enterprise.git
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ git submodule update --init .claude # now actually clones (needs trini
git config submodule.recurse true # auto-syncs .claude when switching branches
```

The config line must come **first** — with the `update = none` default, a plain `--init` is skipped, and **any** init path (plain `--init`, `--init --checkout`, `clone --recurse-submodules`) copies `none` into your local config, so *future* updates keep skipping until the override is set. Without `submodule.recurse true`, switching branches will leave `.claude` stale and skills will disappear. The `fetchRecurseSubmodules = true` in `.gitmodules` handles `git pull` automatically, but branch switching requires the local config above. (Clones initialized before #1443 already carry the `update = checkout` local override — no action needed.)
The config line must come **first** — with the `update = none` default, a plain `--init` is skipped, and **any** init path (plain `--init`, `--init --checkout`, `clone --recurse-submodules`) copies `none` into your local config, so *future* updates keep skipping until the override is set. Without `submodule.recurse true`, switching branches will leave `.claude` stale and skills will disappear. The `fetchRecurseSubmodules = on-demand` in `.gitmodules` handles `git pull` automatically once `.claude` is checked out (a submodule-bump commit triggers the fetch), but branch switching requires the local config above. (Clones initialized before #1443 already carry the `update = checkout` local override — no action needed. `on-demand`, not `true`: `true` unconditionally tries to recurse-fetch `.claude` even when it was never checked out, which fails with "Could not access submodule '.claude'" for anyone — human or self-hosting agent — without `trinity-dev` credentials.)

### External contributors

Expand Down
Loading