Ga naar inhoud

Eén projectgeheugen delen over geneste repo’s

Standaard wordt een project geïdentificeerd door zijn omsluitende git-repository, dus elke fysieke git-repo krijgt zijn eigen geïsoleerde geheugenstore. Dat is verkeerd voor multi-repo-workspaces — bomen beheerd door Google repo, monorepo’s, of elke layout waarin meerdere geneste git-repositories tot één logisch project behoren — omdat elke subrepository silogeïsoleerd zou zijn.

Plaats een leeg .opencode-mem-project-markerbestand bij de workspaceroot:

my-workspace/
├── .opencode-mem-project ← workspaceroot
├── kernel/ (eigen git-repo)
├── userspace/ (eigen git-repo)
└── tools/ (eigen git-repo)

Elke sessie die ergens onder de marker start, lost dan op naar die root en deelt één geheugenstore, ongeacht in welke subrepo de werkdirectory staat:

Terminal window
touch ~/my-workspace/.opencode-mem-project

De marker wordt opgezocht door omhoog te lopen vanaf de werkdirectory die elk codepad al doorgeeft (de werkdirectory van de plugin, de process.cwd() van de web-API), dus identiteit is directorygedreven en procesonafhankelijk. Het steunt niet op omgevingsvariabelen of een globale configwaarde, die hier onbetrouwbaar zouden zijn: opencode-mem draait over meerdere opencode-processen die één webserver delen, en slechts sommige van die processen dragen een gegeven env-var. Met de marker wordt de projectroot altijd afgeleid van waar de sessie daadwerkelijk draait.

De marker heeft voorrang op git-detectie. Wanneer aanwezig, wordt de eigen git-remote van de subrepo bewust genegeerd (die zou slechts één geneste repository beschrijven). Zonder marker blijft het gedrag ongewijzigd (git-gebaseerde identiteit).