Вы подключаете репозиторий, делаете push из IDE — и получаете конфликты слияния. Потерянные правки. Молчаливые откаты. Это фундаментальный архитектурный изъян.
Три способа сломать git sync
1. Одностороннее зеркалирование. Большинство платформ используют git как резервную копию. Push из IDE вызывает конфликты.
2. Приоритет базы данных над git. Wiki.js: база данных — источник истины. Git — экспорт только для чтения. Нельзя сделать git clone, push и увидеть результат в интерфейсе.
3. Деструктивное разрешение конфликтов. Платформы молча перезаписывают данные, создают дубликаты или помечают синхронизацию как «неудавшуюся».
Почему это сложно
Веб-интерфейсы требуют немедленных атомарных записей. Git работает со снимками состояния. Временной разрыв порождает расхождение.
Паттерн Content Ledger
Valoryx: append-only, тотально упорядоченный журнал событий.
- Каждая мутация — это событие, а не прямая запись в git или базу данных
- События применяются к обоим целевым хранилищам — веб-интерфейс (база данных) и git-репозиторий сходятся
- Push в git становится записью в журнал через webhook — веб-интерфейс обновляется за секунды
- Конфликты невозможны по принципу архитектуры — все мутации сериализованы
На практике
- Редактирование в браузере →
git logпоказывает коммит через секунды - Push из VS Code → веб-интерфейс обновляется без ручной синхронизации
- CI изменяет документацию → результат виден в веб-редакторе
git revert→ веб-интерфейс немедленно отражает изменение
Никакого статуса синхронизации. Никакого интерфейса разрешения конфликтов. Никакого расхождения.