[enhancement] Вынести форк Horizon в отдельный репозиторий и подключить к AirDef через git submodule #104
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
🤖 Filed by Codex, AI-агент Владимира (chexit).
Решение пользователя и предварительное условие
Вынести наш форк Horizon в самостоятельный репозиторий и подключить его к AirDef как git submodule по пути
horizon/с фиксацией конкретного коммита.Репозиторий создаст Владимир и передаст URL исполнителю позже. Название
horizon-airdef— пример, не уже существующая репа. Для выполнения нужен<FORK_REPOSITORY_URL>; создание репозитория в эту задачу не входит. Нельзя подставлять придуманный URL или публиковать коммиты в случайно выбранную репу.Основание и границы
В рассмотренном состоянии движок воспроизводится из
HORIZON_COMMITиhorizon-patches/, подготовкой управляетtools/airdef.py fork. При развитии собственного рендера, capture/export, модового API и акустики полноценная история форка удобнее постоянно растущего patch stack.В новой репе живут исходники движка, его SDK/WIT, общие возможности и собственные проверки/сборки. В AirDef остаются симуляция и контент мода, интерфейс, сценарии, ассеты и использование SDK. Отдельную третью репу для SDK/контрактов сейчас не вводить.
Этапы миграции
target/, игровые ресурсы, домашнюю папку запуска или служебные stamp-файлы.horizon/как сабмодуль..gitmodulesхранит доступный URL и путь, gitlink — точный SHA форка. Привести.gitignoreи старую подготовку каталога в соответствие. Существующий checkout и пользовательские изменения сначала безопасно сохранить; никаких автоматических destructive reset/clean. Относительный путь../horizon/crates/horizon-mod-sdkиз Cargo.toml мода по возможности сохранить.tools/airdef.py fork/эквивалент инициализирует и разворачивает закреплённый сабмодуль.game,mod,allработают из чистого checkout. Обычная сборка не подтягивает плавающий latest/main и не накладывает прежний стек патчей поверх уже готового форка. Изменённый рабочий checkout не перезаписывается молча. Совместимость packer/SDK дополнить в рамках #102..gitmodules. Артефакты указывают SHA AirDef и SHA движка. Движок получает собственный lifecycle сборок; совместимая пара версий остаётся воспроизводимой.git clone --recurse-submodules, восстановление зависимости черезgit submodule update --init --recursive, обновление закреплённого SHA и порядок двух связанных PR. Для правок внутри сабмодуля — рабочая ветка; сначала push движка, затем ссылка в моде. Описать возврат к ранее закреплённой версии.Приёмка
Связано: #102 (воспроизводимость/версии SDK и packer), #103 (архитектурная дорожная карта). Акустика #95/#96 и следующие engine-возможности после миграции разрабатываются уже в отдельной репе форка.
🤖 Agent: Codex — работа Владимира (chexit).
Реализован перенос в отдельный https://gitea.maoniao.team/chexit/horizon-airdef, ветка
airdef; AirDef использует точный git submodule SHA. Удалены 44 patch-файла и HORIZON_COMMIT как второй источник; история сохранена в форке. Миграция, актуальный pin.python tools/airdef.py allсам инициализирует зависимость и переводит старый чистый standalone clone в submodule без удаления его веток. Dirty checkout при несовпадающем SHA останавливает обновление. CI checkout обновлён. Проверены настоящий recursive clone и 3 Git regression fixtures: pin старого SHA, сохранение dirty checkout, legacy absorb с локальной веткой.Windows:
git fetch origin,git switch kimi-work,git pull --ff-only,python tools/airdef.py all,python tools/airdef.py play. На Windows здесь не запускалось; инструкции и перенос проверены на macOS.Issue оставлен открытым согласно просьбе автора.