import{_ as a,o as t,c as s,ae as o}from"./chunks/framework.B1nRs-GM.js";const h=JSON.parse('{"title":"Правила процесса","description":"Набор правил, который удерживает template чистой, а обновления шаблона контролируемыми.","frontmatter":{"title":"Правила процесса","description":"Набор правил, который удерживает template чистой, а обновления шаблона контролируемыми."},"headers":[],"relativePath":"concepts/rules.md","filePath":"concepts/rules.md"}'),l={name:"concepts/rules.md"};function c(i,e,d,n,r,p){return t(),s("div",null,[...e[0]||(e[0]=[o(`
Небольшой набор правил удерживает схему чистой.
template обновляем только из templates/master.sync/* создаём от origin/master.origin/template вливаем в sync/*, а не напрямую в master.sync/*.sync/* -> master вливаем через PR/MR.template руками.template.template -> master напрямую.master.sync/* -> master.Squash может уничтожить нормальную связь истории master с историей template.
Git использует историю, чтобы понимать, какие изменения шаблона уже были доставлены в приложение. Если результат обновления шаблона превратить в один squash-коммит, связь с исходными коммитами шаблона станет хуже или исчезнет.
Для sync-PR/MR допустимы:
fast-forward merge = хорошо
merge commit = допустимо
squash merge = нельзяtemplate — эталонный слепок оригинального шаблона.
Если в неё попадает локальное решение конфликта или изменение приложения, она перестаёт отвечать на вопрос: “какая версия шаблона сейчас подключена к приложению?”.
После этого ломается главная граница ответственности: шаблон отдельно, приложение отдельно, конфликтная зона отдельно.
`,16)])])}const u=a(l,[["render",c]]);export{h as __pageData,u as default};