3.1 KiB
date, tags
| date | tags | ||||
|---|---|---|---|---|---|
| 2026-10-17 |
|
2026-10-17 — mode-flip 644↔755: fileMode выключен в sync-vault.sh
Симптом
В /tmp/vault-sync.log накопилось 1705 строк mode change (файл на 51 316 строк). Фазы syncthing / syncthing-out каждые 5 минут создавали коммиты вида:
[2026-10-17 20:20:35] syncthing-out: "work/zoom-transcripts/2026-10-15 ..." work/zoom-transcripts/index.json
3 files changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 work/zoom-transcripts/index.json
и обратные 100755 => 100644. Содержимое не менялось — пустые коммиты с режимом.
Причина
/obsidian-syncthing(клон, куда пишет телефон через Syncthing):core.fileMode = true/vault(агент):core.fileMode = false
Syncthing на телефоне/десктопе пишет файлы как -rwxrwxr-- (0754/0755), агентский клон — 0644. Оба коммитят в один bare → режим «пинг-понгом» уезжает и возвращается. Класс описан в skill vault-sync-infrastructure (случай 2026-09-26, personal/tech), там же стояло «решение владельца, Taiga молча не меняет».
Что сделано
В /opt/data/sync-vault.sh добавлен идемпотентный блок перед тремя фазами:
for d in /vault /obsidian-syncthing; do
[ "$(git -C "$d" config --get core.fileMode || true)" = "false" ] \
|| git -C "$d" config core.fileMode false || true
done
Ставится каждый прогон, а не разово: .git/ клона /obsidian-syncthing сам синкается Syncthing'ом с других устройств и может быть перезаписан (та же механика, что с флипом origin 2026-09-26).
Проверка
bash -n /opt/data/sync-vault.sh— окgit -C /vault config --get core.fileMode→false;git -C /obsidian-syncthing config --get core.fileMode→false- два прогона подряд: HEAD bare до
c71c153c7b90…, послеc71c153c7b90…— новых коммитов нет, в логе толькоAlready up to date. git status --porcelainпуст в/vaultи/obsidian-syncthing- строки
mode changeпосле 20:21:02 не появляются (последние три — применение старого коммитаc71c153фазой 1, не новый churn)
Откат
# убрать блок из /opt/data/sync-vault.sh
git -C /obsidian-syncthing config core.fileMode true
На ZFS exec-бит для заметок смысла не несёт, fileMode=false безопасен. Разовая нормализация через git add --chmod=644 -A без выключения filemode бесполезна — вернётся на следующем массовом проходе Syncthing.