- добавлены каноны и VitePress-сайт стратегии обновления шаблонов - подключена карточка документации на главной странице - добавлены сборочные скрипты, Caddy-маршрут и Docker-сборка - добавлена git-иконка для карточки и сгенерированы публичные артефакты
2.4 KiB
2.4 KiB
url, description
| url | description |
|---|---|
| /template-sync-strategy/concepts/rules.md | Набор правил, который удерживает template чистой, а обновления шаблона контролируемыми. |
Правила процесса
Небольшой набор правил удерживает схему чистой.
Делаем
templateобновляем только изtemplates/master.sync/*создаём отorigin/master.origin/templateвливаем вsync/*, а не напрямую вmaster.- Конфликты решаем только в
sync/*. sync/* -> masterвливаем через PR/MR.- Для sync-PR/MR отключаем squash.
Не делаем
- Не правим
templateруками. - Не коммитим изменения приложения в
template. - Не мержим
template -> masterнапрямую. - Не решаем конфликты в
master. - Не включаем squash для
sync/* -> master.
Почему squash нельзя
Squash может уничтожить нормальную связь истории master с историей template.
Git использует историю, чтобы понимать, какие изменения шаблона уже были доставлены в приложение. Если результат обновления шаблона превратить в один squash-коммит, связь с исходными коммитами шаблона станет хуже или исчезнет.
Для sync-PR/MR допустимы:
fast-forward merge = хорошо
merge commit = допустимо
squash merge = нельзя
Почему template нельзя пачкать
template — эталонный слепок оригинального шаблона.
Если в неё попадает локальное решение конфликта или изменение приложения, она перестаёт отвечать на вопрос: “какая версия шаблона сейчас подключена к приложению?”.
После этого ломается главная граница ответственности: шаблон отдельно, приложение отдельно, конфликтная зона отдельно.