Özellikler
Hesaplar arasında paylaşım
Bu sayfa İngilizceden makine çevirisiyle çevrilmiştir. Düzeltmelere açığız. Bu sayfayı GitHub üzerinde düzenleyin
Her hesabın kendi klasörü vardır, ancak içindekilerin çoğunun ayrı olması gerekmez. ccam share, paylaşımı her seferinde bir hesap ve bir öğe için açar veya kapatır: hesabın dosyası veya klasörü bir grup klasörüne taşınır ve yerine sembolik bir bağlantı konur; böylece gruptaki her hesap aynı kopyayı okur ve yazar. Bir hesabın neyi paylaştığını değiştirmek veya birkaç hesabı kendilerine ait bir gruba koymak için ccam add sonrasında kullanın.
Kullanım
ccam share work # show what work shares, and with which group
ccam share work --history on # share conversation history with the default group
ccam share side --history team # share it with the group team instead
ccam share work --settings off # give work its own copy of settings.json again
ccam share work --memory off --fresh # stop sharing CLAUDE.md and start with no file
ccam share work --settings on --yes --prefer merge # no questions; merge JSON on conflicts
ccam --dry-run share work --history on # print the plan, change nothingÖğe seçenekleri olmadan ccam share mevcut durumu yazdırır:
$ ccam share work
Sharing for work
MCP servers shared (group default) --mcp
settings.json shared (group default) --settings
global CLAUDE.md shared (group default) --memory
agents, commands, skills, plugins shared (group default) --extensions
conversation history local --historySeçeneklerle ccam bir plan yazdırır, grubun kopyasından farklı olan her dosya için sorar ve herhangi bir şeyi değiştirmeden önce Proceed? [y/N] diye sorar. Yeni bir hesap konuşma geçmişi dışında her şeyi paylaşır; MCP sunucularını, ayarları ve geçmişi paylaşma sayfası her öğeyi kullanıcı açısından açıklar.
Seçenekler
| Seçenek | Ne yapar | Varsayılan |
|---|---|---|
--mcp <on|off|group> |
MCP sunucuları | değişmez |
--settings <on|off|group> |
settings.json |
değişmez |
--memory <on|off|group> |
genel CLAUDE.md |
değişmez |
--extensions <on|off|group> |
agents/, commands/, skills/, plugins/, output-styles/, rules/ |
değişmez |
--history <on|off|group> |
projects/ ve history.jsonl |
değişmez |
--fresh |
paylaşımı kapatırken grubun içeriğini kopyalamak yerine boş başlar | kapalı |
--prefer <group|mine|merge> |
çakışmalara nasıl karar verileceği | sorar; --yes ile her öğenin varsayılanı |
-y, --yes |
sormadan çalışır; çakışmalar --prefer seçeneğini izler |
kapalı |
-h, --help |
share yardımı |
|
--dry-run (genel) |
dikkate alınır: çakışmaları sorar, planı yazdırır, hiçbir şeyi değiştirmez | kapalı |
on değeri default grubu, off yerel (paylaşılmayan) anlamına gelir; diğer her değer bir grup adıdır. Grup adları ~/.local/share/ccam/groups/ altında klasör adları olur; bu yüzden ccam share side --history ../x, invalid group name: "../x" ile başarısız olur. Hesap adla veya numarayla verilir ve yalnızca belirttiğiniz öğeler değişir.
Nasıl çalışır
İlgili dosyalar:
~/.config/ccam/config.toml: her hesabın[profile.share]tablosu, öğe başına bir değer.~/.local/share/ccam/profiles/<name>/: hesabınCLAUDE_CONFIG_DIRklasörü.~/.local/share/ccam/groups/<group>/: paylaşılan kopyalar.
internal/cli/share.goyapılandırmayı okur, her--<item>değeriniconfig.Share.Setile hesabın ayarlarının bir kopyasına uygular ve hesap çalışıyorsa reddeder.share.Buildmevcut ayarları hedefle karşılaştırır ve adımları listeler. Diski yalnızca okur:share.Layoutiçindeki her yol içinos.Lstatveos.Readlink. Plan bir işlemler listesidir: boş bir grup yuvasına taşıma (adopt), grupta olmayan dosyaları taşıma (merge dir), çözümlenmiş bir çakışmayı gruba yazma, yedekleme, bağlantıyı kaldırma, bağlama, geri kopyalama, eklenti yollarını yeniden yazma ve eklenti kaydını birleştirme.- Çakışmalara soruyla veya
--preferile karar verilir. Plan.Describeplanı yazdırır ve ccam onay ister.- Hiçbir şey taşınmadan önce hedef ayarlar
config.tomldosyasına yazılır.Plan.Applyyarıda durursaccam doctor --fixve yeniden çalıştırma, planlarını kaydedilmiş hedefe doğru oluşturur ve değişikliği tamamlar. Plan.Applyadımları sırayla çalıştırır. Her adım veriyi gruba veya yedek klasörüne taşır; hiçbir şey silinmez.
share.Layout, her öğenin kapsadığı yolların bir izin listesidir. Listede olmayan hiçbir şey bir gruba ulaşamaz. share.Never, .credentials.json ve .claude.json dosyalarını adlandırır; bunlardan biri düzende görünürse Build dahili bir hatayla durur. mcp öğesinin yolu yoktur: sunucu listesi .claude.json içinde bulunur; bu yüzden MCP paylaşımı bunun yerine grubun mcp.json dosyası üzerinden çalışır ve --mcp yalnızca ayarı değiştirir.
side geçmişi açtığında ve grupta zaten içerik bulunduğunda tek bir klasöre, projects/ klasörüne olanlar şunlardır:
Grupta o yolda henüz hiçbir şey yoksa hesap onu paylaşan ilk hesaptır ve klasörü yedek alınmadan olduğu gibi oraya taşınır. Aksi halde mergeDir, grupta olmayan her dosyayı gruba taşır; her iki tarafta da bulunan dosyalar hesabın klasöründe kalır, böylece grubun sürümü korunur. Ardından hesabın klasörü hesap klasörünün içindeki .ccam-backup/<time>/ konumuna gider ve os.Symlink yerine bir bağlantı koyar. Konuşma dosyaları oturum kimliklerine göre adlandırılır; bu nedenle birden fazla hesabın geçmişi çakışma olmadan birleşir.
Taşıma rename(2) kullanır ve dosya sistemleri arasında kopyalayıp silmeye geri döner. Taşınan ağacın içinde, ağacın dışını gösteren göreli bir bağlantı mutlak bir bağlantı olarak yeniden yazılır (fsutil.PortableLink); böylece yeni yerden de çözümlenir. plugins/ kayıtları (installed_plugins.json, known_marketplaces.json) hesap klasöründen geçen mutlak yollar saklar; ccam bunları grubun klasörünü gösterecek şekilde değiştirir ve grupta zaten bir kayıt varsa hesabın girdilerini onunla birleştirir.
Bir öğeyi kapatmak bağlantıyı tersine çevirir:
ccam bağlantıyı yalnızca gruplar klasörünü gösteriyorsa kaldırır, ardından grubun mevcut içeriğini CopyTree ile hesaba kopyalar. --fresh ile kopyalama atlanır ve hesap o yolda hiçbir şey olmadan başlar. Grup, içeriğini diğer hesaplar için korur. Bir öğeyi bir gruptan diğerine taşımak, bağlantıyı kaldırır ve yeni gruba bağlar; eski grup olduğu gibi kalır. Plan bunu bir Note: satırında belirtir.
Her iki tarafta da bulunan ve içeriği farklı olan tek bir dosya bir çakışmadır:
share.NewConflict, dosyaya uyan seçenekleri listeler. history.jsonl, önce birleştirme olmak üzere merge by line, keep group ve use mine sunar. Diğer .json dosyaları keep group, use mine ve merge JSON sunar. Geri kalan her şey keep group ve use mine sunar. İlk seçenek varsayılandır:
history.jsonl differs from the group's copy.
mine: ~/.local/share/ccam/profiles/side/history.jsonl
group: ~/.local/share/ccam/groups/default/history.jsonl
1) merge by line
2) keep group
3) use mine
Choice [1]:merge JSON (MergeJSONBytes) nesneleri özyinelemeli olarak birleştirir, dizileri yinelenenler olmadan birleştirir ve iki taraf aynı anahtara farklı değerler verdiğinde grubun değerini korur; böylece diğer hesaplar davranışta hiçbir değişiklik görmez. merge by line grubun satırlarını korur, ardından grupta olmayan sizin satırlarınızı ekler. keep group dışındaki her seçenek önce grubun kopyasını hesap klasöründeki .ccam-backup/<time>/group/ içine kaydeder, ardından sonucu fsutil.AtomicWrite ile yazar. Kendi dosyanız her zaman yedeğe gider.
--prefer group, mine veya merge her çakışmaya sormadan karar verir; merge, dosyanın sunduğuna göre merge JSON veya merge by line anlamına gelir ve ikisini de sunmayan bir dosya varsayılanı korur. Tek başına --yes her dosyanın varsayılanını alır.
Her başlatmada share.Check, düzendeki her yolu yalnızca lstat ve readlink kullanarak ayarla karşılaştırır; bu, onu başlatma yolu için yeterince ucuz tutar. Eksik bir bağlantı anında oluşturulur, çünkü kaybedilecek bir şey yoktur. Bağlantı olması gereken yerde gerçek bir dosya, yanlış yere yönelen bir bağlantı veya bayat bir bağlantı başlatmayı durdurur:
ccam: stopped because of share link problems:
~/.local/share/ccam/profiles/work/CLAUDE.md: set to shared but is a real file, not a link
Repair them with `ccam doctor --fix`, then run againccam doctor --fix, share.Build fonksiyonunu kayıtlı ayarları her iki tarafa vererek çalıştırır; bu, her adımı diskte bulunandan türetir, çakışmalarda grubun içeriğini korur ve değiştirdiği her şeyi yedekler.
Güvenlik ve uç durumlar
- Çalışan hesaplar. Claude Code o hesapla çalışırken ccam paylaşımı değiştirmeyi reddeder (
account work is running; quit it first, then change its sharing), çünkü oturum taşınan dosyalara yazmaya devam eder ve bu arada eklediği satırlar kaybolur.--dry-runyine de planı yazdırır. - Yedekler. Her plan, hesap klasöründe kendi
.ccam-backup/<time>/klasörünü alır; iki plan aynı saniyede başlarsa numaralı bir sonek eklenir. ccam bunları hiçbir zaman silmez. - Kısmi hatalar. Bir adım başarısız olursa ccam hatayı ve orijinallerin nerede olduğunu yazdırır ve işlemi
ccam doctor --fixile tamamlamanızı söyler. Hedef zaten kaydedilmiştir; bu yüzden onarım ona doğru devam eder. - Kendi bağlantılarınız. Bir yol zaten sizin oluşturduğunuz bir bağlantıysa, örneğin bir dotfiles deposuna, ve grup boşsa ccam bağlantının hedefini gruba kopyalar ve bağlantının kendisini yedeğe taşır. Hedefe dokunulmaz.
- Giriş dosyaları.
.credentials.jsonve.claude.jsonhiçbir zaman bir gruba bağlanmaz, taşınmaz veya kopyalanmaz. - Bir klasörde iki hesap. Geçmiş paylaşan hesaplar aynı dosyalara yazar. Aynı geçmiş grubundan ikinci bir hesap, birinin zaten çalıştığı bir klasörde başladığında ccam uyarır ve devam etmeden önce sorar.