跳转到内容

在嵌套仓库间共享同一项目记忆

默认情况下,项目由其包围的 git 仓库标识,因此每个 物理 git 仓库都有自己独立的记忆存储。这对 多仓库工作区是错误的 — 由 Google repo 管理的树、单体仓库,或任何多个嵌套 git 仓库属于同一 逻辑项目的布局 — 因为每个子仓库都会被隔离。

在工作区根目录放置一个空的 .opencode-mem-project 标记文件:

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

然后,在标记下方任意位置启动的每个会话都会解析到该 根目录并共享一个记忆存储,无论工作目录位于哪个子仓库:

终端窗口
touch ~/my-workspace/.opencode-mem-project

标记通过从每条代码路径已经传入的工作目录向上遍历来查找 (插件的工作目录、Web API 的 process.cwd()),因此身份是目录驱动且与进程无关的。 它不依赖环境变量或全局配置值,在这里这些会 不可靠:opencode-mem 跨多个共享单个 Web 服务器的 opencode 进程运行,而这些进程中只有一部分携带给定 环境变量。有了标记,项目根始终从会话实际 运行的位置派生。

标记优先于 git 检测。存在时, 子仓库自己的 git remote 会被有意忽略(它只会描述一个 嵌套仓库)。没有标记时,行为不变(基于 git 的 身份)。