İçeriğe geç

İç içe repolar arasında tek proje belleğini paylaşma

Varsayılan olarak bir proje, onu çevreleyen git deposuyla tanımlanır; bu nedenle her fiziksel git deposu kendi yalıtılmış bellek deposunu alır. Bu, çoklu-repo çalışma alanları için yanlıştır — Google repo ile yönetilen ağaçlar, monorepolar veya birkaç iç içe git deposunun tek bir mantıksal projeye ait olduğu herhangi bir düzen — çünkü her alt depo silolanırdı.

Çalışma alanı köküne boş bir .opencode-mem-project işaretçi dosyası bırakın:

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

İşaretçinin altındaki herhangi bir yerde başlatılan her oturum ardından o köke çözülür ve çalışma dizininin hangi alt depoda yaşadığına bakılmaksızın tek bir bellek deposunu paylaşır:

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

İşaretçi, her kod yolunun zaten ilettiği çalışma dizininden yukarı yürüyerek aranır (eklentinin çalışma dizini, web API’nin process.cwd()’si); böylece kimlik dizin odaklı ve süreçten bağımsızdır. Burada güvenilmez olacak ortam değişkenlerine veya genel bir yapılandırma değerine dayanmaz: opencode-mem, tek bir web sunucusunu paylaşan birden fazla opencode sürecinde çalışır ve bu süreçlerin yalnızca bazıları belirli bir ortam değişkenini taşır. İşaretçiyle proje kökü her zaman oturumun gerçekten çalıştığı yerden türetilir.

İşaretçi, git tespitine göre önceliklidir. Mevcut olduğunda alt deponun kendi git remote’u kasıtlı olarak yok sayılır (yalnızca bir iç içe depoyu tanımlardı). İşaretçi olmadan davranış değişmez (git tabanlı kimlik).