[2026-06-20] kraken: family/how-to/vault-git-sync.md
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Vault Git Sync — Architecture & Scripts
|
title: Vault Git Sync — Architecture & Scripts
|
||||||
updated: '2026-06-02'
|
updated: '2026-06-20'
|
||||||
type: tech
|
type: tech
|
||||||
tags:
|
tags:
|
||||||
- vault
|
- vault
|
||||||
@@ -124,6 +124,29 @@ cd ~/Developer/vault-sync-test && bash test-sync.sh
|
|||||||
|
|
||||||
## History
|
## History
|
||||||
|
|
||||||
|
- **2026-06-20**: Kraken ACL fix. mcpvault (Hermes контейнер, uid 10000) не мог писать в существующие файлы vault из-за прав (EACCES). Подробно:
|
||||||
|
|
||||||
|
**Проблема 1 — права доступа:** файлы в vault создаются от uid 1000 (kraken через git на хосте), а mcpvault в контейнере работает от uid 10000. `patch_note` падал: `EACCES: permission denied`. `delete_note` + `write_note` срабатывали, но mcpvault при write перезаписывает файл целиком, переформатируя YAML фронтматер (убирает кавычки, меняет стиль) — шум в git-diff.
|
||||||
|
|
||||||
|
**Проблема 2 — экранирование backtick в patch_note:** mcpvault `patch_note` не может найти строку, содержащую тройные обратные кавычки (`` ``` ``). Пришлось якориться на соседнюю строку без backtick — например, на `\n\n## Заголовок` вместо `\`\`\`\n\n## Заголовок`.
|
||||||
|
|
||||||
|
**Решение — ACL ext4 (setfacl):**
|
||||||
|
```bash
|
||||||
|
sudo setfacl -R -m u:10000:rwx /srv/.../obsidian # mcpvault — write
|
||||||
|
sudo setfacl -R -d -m u:10000:rwx /srv/.../obsidian # default для новых файлов
|
||||||
|
sudo setfacl -R -m g:kraken:rwx /srv/.../obsidian # kraken (uid 1000) — write
|
||||||
|
sudo setfacl -R -d -m g:kraken:rwx /srv/.../obsidian # default для новых файлов
|
||||||
|
```
|
||||||
|
|
||||||
|
**Итоговая совместимость:** uid 10000 (mcpvault) и uid 1000 (kraken/git) могут читать и писать одни и те же файлы. `patch_note` работает без EACCES.
|
||||||
|
|
||||||
|
**Ограничение (mcpvault patch_note + backtick):** `patch_note` не может найти строку, содержащую тройные обратные кавычки (`` ``` ``). Пример: нужно было вставить новый раздел между closing code fence `\`\`\`` и заголовком `## Исправления (v0.0.92...`. Варианты `oldString`, которые **НЕ сработали**:
|
||||||
|
- `"}\n\n\`\`\`\n\n## Исправления (v0.0.92..."` — не найдено
|
||||||
|
- `"\`\`\`\n\n\n## Исправления (v0.0.92..."` — не найдено
|
||||||
|
- Любая комбинация пустых строк между `\`\`\`` и заголовком — не найдено
|
||||||
|
|
||||||
|
**Что сработало:** якориться на соседнюю строку **без** обратных кавычек. Вместо `\`\`\`\n\n## Исправления...` использовать `\n\n## Исправления (v0.0.92...` — замена пустой строки + заголовка, куда перед заголовком вставляется новый контент, а сам заголовок остаётся. `patch_note(oldString="\n\n## Исправления (v0.0.92...")` — найдено и отработало.
|
||||||
|
|
||||||
- **2026-05-23**: Taiga deleted 32+ wiki files. Root cause: `git add -A` before merge staged deletions of files outside sparse cone. Fixed with scoped `git add`.
|
- **2026-05-23**: Taiga deleted 32+ wiki files. Root cause: `git add -A` before merge staged deletions of files outside sparse cone. Fixed with scoped `git add`.
|
||||||
- **2026-06-01**: "Керамика" lost from gift-ideas. Root cause: `git add $SPARSE_PATHS` failed silently when `.obsidian/` absent — patch+move not committed.
|
- **2026-06-01**: "Керамика" lost from gift-ideas. Root cause: `git add $SPARSE_PATHS` failed silently when `.obsidian/` absent — patch+move not committed.
|
||||||
- **2026-06-02**: Full architecture migration. Taiga `/vault` converted from `GIT_DIR=bare GIT_WORK_TREE` workaround to proper sparse clone. All clients unified on same `commit→fetch→merge→push` algorithm. Sync interval: every 5 min.
|
- **2026-06-02**: Full architecture migration. Taiga `/vault` converted from `GIT_DIR=bare GIT_WORK_TREE` workaround to proper sparse clone. All clients unified on same `commit→fetch→merge→push` algorithm. Sync interval: every 5 min.
|
||||||
|
|||||||
Reference in New Issue
Block a user