Интересный проект-эксперимент состоявшийся весной 2026 года.
Идея была в том чтобы создать удобный CLI-инструмент в виде единого исполняемого файла (single binary) без внешних зависимостей для быстрого старта среды разработки c поддержкой АИ-агентов системой версионирования на Git и worktree.
Репозиторий:
https://github.com/Automattic/forkpress
AI-документация по репозиторию на DeepWiki
Видео-обзор(англ.)
на видео показан типичный воркфлоу с forkpress с обзоров возможностей данного инструмента
Основные возможности:
- Локальный запуск WordPress через единый бинарный файл
- Мгновенное создание веток с изолированными SQLite базами данных
- Отдельные URL для предпросмотра каждой ветки (например, http://marketing.wp.localhost:18080/)
- Управления файлами и базой данных WordPress в стиле Git
Структура веток:
Каждая ветка представляет собой обычную директорию WordPress рядом с .forkpress:
.forkpress/ # Метаданные ForkPress, runtime, логи и хранилище
main/ # Основная WordPress-ветка
marketing/ # Ветка marketingCode language: PHP (php)
Каждая ветка имеет свою SQLite базу данных по пути wp-content/database/.ht.sqlite, что обеспечивает полную изоляцию изменений.
Управление ветками
# Создание ветки
forkpress branch create marketing
forkpress branch create marketing --from staging
# Просмотр веток
forkpress branch list
forkpress branch show marketing
# Сброс и удаление
forkpress branch reset marketing --from main
forkpress branch delete marketingCode language: PHP (php)
Интеграция с Git
# Клонирование сайта
forkpress clone http://wp.localhost:18080/site.git site
cd site
# Переключение веток
git fetch origin
git switch marketing
# Коммит изменений
forkpress commit -m "Update marketing page"Code language: PHP (php)
Дополнительные возможности
- Agent worktrees — рабочие пространства для AI-агентов
- Переключатель веток в админ-баре WordPress
- Редактированные снапшоты базы данных для контекста моделей
- Аудируемые решения по слиянию
- CLI-диагностика для логов и хранилища
Причины архивации проекта
Проект был архивирован по фундаментальной причине:
Проблема семантического слияния баз данных WordPress
Эксперимент показал, что универсальное слияние веток базы данных WordPress не может быть надежно решено на уровне инструментов вне ядра WordPress. Причины:
- Семантическая сложность данных: WordPress хранит состояние приложения в строках, смысл которых зависит от:
- Поведения ядра
- Поведения плагинов
- Опций
- Типов записей
- Мета-данных записей
- Таксономий
- Специальных соглашений
- Ограничения инструментов слияния: Инструмент слияния может обнаружить, что строки изменились, но не может надежно определить семантическое намерение этих изменений или создать безопасный комбинированный результат для произвольных сайтов.
- Необходимость изменений в ядре: Для надежной работы потребовалось бы:
- Явное моделирование данных в ядре WordPress
- Семантика слияния на уровне ядра
- API для участия плагинов в процессе слияния
Выводы проекта
ForkPress доказал, что:
- Единый бинарный файл может запускать WordPress локально
- Можно создавать дешевые copy-on-write ветки
- Можно предоставлять предпросмотр веток
- Можно сделать часть рабочего процесса похожей на Git
НО:
Универсальное слияние веток базы данных WordPress не может быть надежно реализовано без поддержки на уровне ядра WordPress
