Files
docs/public/template-sync-strategy/concepts/model.html
S.Gromov 1a14df9366 feat: добавить документацию Template Sync Strategy
- добавлены каноны и VitePress-сайт стратегии обновления шаблонов

- подключена карточка документации на главной странице

- добавлены сборочные скрипты, Caddy-маршрут и Docker-сборка

- добавлена git-иконка для карточки и сгенерированы публичные артефакты
2026-05-13 23:23:31 +03:00

29 lines
23 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Модель веток | Template Sync Strategy</title>
<meta name="description" content="Роли веток и remote в стратегии обновления проекта от шаблона.">
<meta name="generator" content="VitePress v1.6.4">
<link rel="preload stylesheet" href="/template-sync-strategy/assets/style.CSIvdBoa.css" as="style">
<link rel="preload stylesheet" href="/template-sync-strategy/vp-icons.css" as="style">
<script type="module" src="/template-sync-strategy/assets/app.0Bzyh7PD.js"></script>
<link rel="preload" href="/template-sync-strategy/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/template-sync-strategy/assets/chunks/theme.CloMnL7i.js">
<link rel="modulepreload" href="/template-sync-strategy/assets/chunks/framework.B1nRs-GM.js">
<link rel="modulepreload" href="/template-sync-strategy/assets/concepts_model.md.C805A9As.lean.js">
<script id="sync-docs-theme">(()=>{if(localStorage.getItem("vitepress-theme-appearance"))return;const e=localStorage.getItem("all-docs-theme");e&&(localStorage.setItem("vitepress-theme-appearance",e==="system"?"auto":e),localStorage.removeItem("all-docs-theme"))})();</script>
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-c4daae71><!--[--><!--]--><!--[--><span tabindex="-1" data-v-17ad389b></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-17ad389b>Skip to content</a><!--]--><!----><header class="VPNav" data-v-c4daae71 data-v-a46e73f0><div class="VPNavBar" data-v-a46e73f0 data-v-bb7529ee><div class="wrapper" data-v-bb7529ee><div class="container" data-v-bb7529ee><div class="title" data-v-bb7529ee><div class="VPNavBarTitle has-sidebar" data-v-bb7529ee data-v-5622a072><a class="title" href="/template-sync-strategy/" data-v-5622a072><!--[--><!--]--><!----><span data-v-5622a072>Template Sync Strategy</span><!--[--><!--]--></a></div></div><div class="content" data-v-bb7529ee><div class="content-body" data-v-bb7529ee><!--[--><!--[--><!--[--><a class="docsNavLink docsBackLink" href="/" target="_self" aria-label="Вернуться к списку документаций" data-v-6cf40780><span class="docsBackIcon" aria-hidden="true" data-v-6cf40780></span><span data-v-6cf40780>К списку документаций</span></a><!--]--><!--]--><!--]--><div class="VPNavBarSearch search" data-v-bb7529ee><!----></div><!----><!----><div class="VPNavBarAppearance appearance" data-v-bb7529ee data-v-123fcb2f><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-123fcb2f data-v-fa1daf57 data-v-7012e5dd><span class="check" data-v-7012e5dd><span class="icon" data-v-7012e5dd><!--[--><span class="vpi-sun sun" data-v-fa1daf57></span><span class="vpi-moon moon" data-v-fa1daf57></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-bb7529ee data-v-08b35e6f data-v-f2234a39><!--[--><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-bb7529ee data-v-0c845e5d data-v-40e55da0><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-40e55da0><span class="vpi-more-horizontal icon" data-v-40e55da0></span></button><div class="menu" data-v-40e55da0><div class="VPMenu" data-v-40e55da0 data-v-39eca401><!----><!--[--><!--[--><!----><div class="group" data-v-0c845e5d><div class="item appearance" data-v-0c845e5d><p class="label" data-v-0c845e5d>Appearance</p><div class="appearance-action" data-v-0c845e5d><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-0c845e5d data-v-fa1daf57 data-v-7012e5dd><span class="check" data-v-7012e5dd><span class="icon" data-v-7012e5dd><!--[--><span class="vpi-sun sun" data-v-fa1daf57></span><span class="vpi-moon moon" data-v-fa1daf57></span><!--]--></span></span></button></div></div></div><div class="group" data-v-0c845e5d><div class="item social-links" data-v-0c845e5d><div class="VPSocialLinks social-links-list" data-v-0c845e5d data-v-f2234a39><!--[--><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--[--><!--[--><a class="docsRepoLink" href="https://gromlab.ru/gromov/docs" target="_blank" rel="noopener noreferrer" aria-label="Открыть репозиторий" title="Репозиторий" data-v-6cf40780><svg aria-hidden="true" viewBox="0 0 24 24" data-v-6cf40780><path d="M12 .5a12 12 0 0 0-3.8 23.38c.6.12.83-.26.83-.57l-.02-2.04c-3.34.72-4.04-1.61-4.04-1.61-.55-1.39-1.34-1.76-1.34-1.76-1.08-.74.09-.73.09-.73 1.2.09 1.83 1.24 1.83 1.24 1.08 1.83 2.81 1.3 3.5 1 .1-.78.42-1.31.76-1.61-2.67-.3-5.47-1.33-5.47-5.93 0-1.31.47-2.38 1.24-3.22-.14-.3-.54-1.52.1-3.18 0 0 1.01-.32 3.3 1.23a11.5 11.5 0 0 1 6 0c2.28-1.55 3.29-1.23 3.29-1.23.64 1.66.24 2.88.12 3.18a4.65 4.65 0 0 1 1.23 3.22c0 4.61-2.8 5.63-5.48 5.92.42.36.81 1.1.81 2.22l-.01 3.29c0 .31.2.69.82.57A12 12 0 0 0 12 .5Z" data-v-6cf40780></path></svg></a><!--]--><!--]--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-bb7529ee data-v-670493dd><span class="container" data-v-670493dd><span class="top" data-v-670493dd></span><span class="middle" data-v-670493dd></span><span class="bottom" data-v-670493dd></span></span></button></div></div></div></div><div class="divider" data-v-bb7529ee><div class="divider-line" data-v-bb7529ee></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-c4daae71 data-v-9d8129cc><div class="container" data-v-9d8129cc><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-9d8129cc><span class="vpi-align-left menu-icon" data-v-9d8129cc></span><span class="menu-text" data-v-9d8129cc>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-9d8129cc data-v-d61422fe><button data-v-d61422fe>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-c4daae71 data-v-12a40e3d><div class="curtain" data-v-12a40e3d></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-12a40e3d><span class="visually-hidden" id="sidebar-aria-label" data-v-12a40e3d> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-ec086cd5><section class="VPSidebarItem level-0 has-active" data-v-ec086cd5 data-v-2e0476bc><div class="item" role="button" tabindex="0" data-v-2e0476bc><div class="indicator" data-v-2e0476bc></div><h2 class="text" data-v-2e0476bc>Введение</h2><!----></div><div class="items" data-v-2e0476bc><!--[--><div class="VPSidebarItem level-1 is-link" data-v-2e0476bc data-v-2e0476bc><div class="item" data-v-2e0476bc><div class="indicator" data-v-2e0476bc></div><a class="VPLink link link" href="/template-sync-strategy/overview" data-v-2e0476bc><!--[--><p class="text" data-v-2e0476bc>Обзор</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-2e0476bc data-v-2e0476bc><div class="item" data-v-2e0476bc><div class="indicator" data-v-2e0476bc></div><a class="VPLink link link" href="/template-sync-strategy/concepts/why" data-v-2e0476bc><!--[--><p class="text" data-v-2e0476bc>Зачем это нужно</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-2e0476bc data-v-2e0476bc><div class="item" data-v-2e0476bc><div class="indicator" data-v-2e0476bc></div><a class="VPLink link link" href="/template-sync-strategy/concepts/model" data-v-2e0476bc><!--[--><p class="text" data-v-2e0476bc>Модель веток</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-2e0476bc data-v-2e0476bc><div class="item" data-v-2e0476bc><div class="indicator" data-v-2e0476bc></div><a class="VPLink link link" href="/template-sync-strategy/concepts/rules" data-v-2e0476bc><!--[--><p class="text" data-v-2e0476bc>Правила процесса</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-ec086cd5><section class="VPSidebarItem level-0" data-v-ec086cd5 data-v-2e0476bc><div class="item" role="button" tabindex="0" data-v-2e0476bc><div class="indicator" data-v-2e0476bc></div><h2 class="text" data-v-2e0476bc>Настройка</h2><!----></div><div class="items" data-v-2e0476bc><!--[--><div class="VPSidebarItem level-1 is-link" data-v-2e0476bc data-v-2e0476bc><div class="item" data-v-2e0476bc><div class="indicator" data-v-2e0476bc></div><a class="VPLink link link" href="/template-sync-strategy/setup/clean-repository" data-v-2e0476bc><!--[--><p class="text" data-v-2e0476bc>Новый проект от шаблона</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-2e0476bc data-v-2e0476bc><div class="item" data-v-2e0476bc><div class="indicator" data-v-2e0476bc></div><a class="VPLink link link" href="/template-sync-strategy/setup/existing-master-migration" data-v-2e0476bc><!--[--><p class="text" data-v-2e0476bc>Миграция существующего master</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-ec086cd5><section class="VPSidebarItem level-0" data-v-ec086cd5 data-v-2e0476bc><div class="item" role="button" tabindex="0" data-v-2e0476bc><div class="indicator" data-v-2e0476bc></div><h2 class="text" data-v-2e0476bc>Рабочие процессы</h2><!----></div><div class="items" data-v-2e0476bc><!--[--><div class="VPSidebarItem level-1 is-link" data-v-2e0476bc data-v-2e0476bc><div class="item" data-v-2e0476bc><div class="indicator" data-v-2e0476bc></div><a class="VPLink link link" href="/template-sync-strategy/workflows/update-template" data-v-2e0476bc><!--[--><p class="text" data-v-2e0476bc>Обычное обновление шаблона</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-2e0476bc data-v-2e0476bc><div class="item" data-v-2e0476bc><div class="indicator" data-v-2e0476bc></div><a class="VPLink link link" href="/template-sync-strategy/workflows/resolve-conflicts" data-v-2e0476bc><!--[--><p class="text" data-v-2e0476bc>Решение конфликтов</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-2e0476bc data-v-2e0476bc><div class="item" data-v-2e0476bc><div class="indicator" data-v-2e0476bc></div><a class="VPLink link link" href="/template-sync-strategy/workflows/review-and-merge" data-v-2e0476bc><!--[--><p class="text" data-v-2e0476bc>Review и merge</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-ec086cd5><section class="VPSidebarItem level-0" data-v-ec086cd5 data-v-2e0476bc><div class="item" role="button" tabindex="0" data-v-2e0476bc><div class="indicator" data-v-2e0476bc></div><h2 class="text" data-v-2e0476bc>Справочник</h2><!----></div><div class="items" data-v-2e0476bc><!--[--><div class="VPSidebarItem level-1 is-link" data-v-2e0476bc data-v-2e0476bc><div class="item" data-v-2e0476bc><div class="indicator" data-v-2e0476bc></div><a class="VPLink link link" href="/template-sync-strategy/reference/cheatsheet" data-v-2e0476bc><!--[--><p class="text" data-v-2e0476bc>Памятка</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-2e0476bc data-v-2e0476bc><div class="item" data-v-2e0476bc><div class="indicator" data-v-2e0476bc></div><a class="VPLink link link" href="/template-sync-strategy/reference/troubleshooting" data-v-2e0476bc><!--[--><p class="text" data-v-2e0476bc>Troubleshooting</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-2e0476bc data-v-2e0476bc><div class="item" data-v-2e0476bc><div class="indicator" data-v-2e0476bc></div><a class="VPLink link link" href="/template-sync-strategy/reference/glossary" data-v-2e0476bc><!--[--><p class="text" data-v-2e0476bc>Глоссарий</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-c4daae71 data-v-d2aef184><div class="VPDoc has-sidebar has-aside" data-v-d2aef184 data-v-ef3a4dda><!--[--><!--]--><div class="container" data-v-ef3a4dda><div class="aside" data-v-ef3a4dda><div class="aside-curtain" data-v-ef3a4dda></div><div class="aside-container" data-v-ef3a4dda><div class="aside-content" data-v-ef3a4dda><div class="VPDocAside" data-v-ef3a4dda data-v-79cae1a0><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-79cae1a0 data-v-dfbd9fb8><div class="content" data-v-dfbd9fb8><div class="outline-marker" data-v-dfbd9fb8></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-dfbd9fb8>On this page</div><ul class="VPDocOutlineItem root" data-v-dfbd9fb8 data-v-da421f78><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-79cae1a0></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-ef3a4dda><div class="content-container" data-v-ef3a4dda><!--[--><!--]--><main class="main" data-v-ef3a4dda><div style="position:relative;" class="vp-doc _template-sync-strategy_concepts_model" data-v-ef3a4dda><div><div style="display:none;" hidden="true" aria-hidden="true">Are you an LLM? You can read better optimized documentation at /template-sync-strategy/concepts/model.md for this page in Markdown format</div><h1 id="модель-веток" tabindex="-1">Модель веток <a class="header-anchor" href="#модель-веток" aria-label="Permalink to &quot;Модель веток&quot;"></a></h1><p>Целевая схема:</p><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>templates/master -&gt; template -&gt; sync/* -&gt; master</span></span></code></pre></div><p>Это логическая модель ответственности. Она не требует физически разделять файлы шаблона и приложения по папкам.</p><h2 id="templates-master" tabindex="-1">templates/master <a class="header-anchor" href="#templates-master" aria-label="Permalink to &quot;templates/master&quot;"></a></h2><p><code>templates/master</code> — это <code>master</code> из репозитория шаблона.</p><p>В репозитории приложения он доступен через remote <code>templates</code>:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> remote</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> templates</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">template-repo-ur</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">l</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> fetch</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> templates</span></span></code></pre></div><p>Этот remote считается источником обновлений шаблона.</p><h2 id="template" tabindex="-1">template <a class="header-anchor" href="#template" aria-label="Permalink to &quot;template&quot;"></a></h2><p><code>template</code> — чистый слепок шаблона внутри репозитория приложения.</p><p>Его задача — показать, какая версия шаблонной базы сейчас доступна приложению.</p><p>В <code>template</code> нельзя коммитить руками изменения приложения. Эта ветка обновляется только из <code>templates/master</code>.</p><h2 id="master" tabindex="-1">master <a class="header-anchor" href="#master" aria-label="Permalink to &quot;master&quot;"></a></h2><p><code>master</code> — основная ветка приложения.</p><p>Она содержит:</p><ul><li>базу шаблона;</li><li>продуктовый код;</li><li>локальные настройки приложения;</li><li>историю применения обновлений шаблона.</li></ul><p><code>master</code> не используется как место ручного решения конфликтов при обновлении шаблона.</p><h2 id="sync" tabindex="-1">sync/* <a class="header-anchor" href="#sync" aria-label="Permalink to &quot;sync/*&quot;"></a></h2><p><code>sync/*</code> — временная ветка для обновления приложения от шаблона.</p><p>Она создаётся от актуального <code>origin/master</code>, после чего в неё вливается <code>origin/template</code>.</p><p>Пример:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> fetch</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> origin</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> switch</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -c</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> sync/update-template-v2</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> origin/master</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> merge</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> origin/template</span></span></code></pre></div><p>Если появляются конфликты, они решаются именно в этой ветке.</p><h2 id="почему-нужен-отдельныи-sync-слои" tabindex="-1">Почему нужен отдельный sync-слой <a class="header-anchor" href="#почему-нужен-отдельныи-sync-слои" aria-label="Permalink to &quot;Почему нужен отдельный sync-слой&quot;"></a></h2><p>Нельзя безопасно использовать <code>template</code> как source branch для прямого PR/MR в <code>master</code>: если возникнет конфликт, решение может попасть в <code>template</code>.</p><p>После этого <code>template</code> перестанет быть чистым слепком шаблона. Git начнёт видеть в ней не только шаблон, но и локальные решения конкретного приложения.</p><p><code>sync/*</code> можно пачкать conflict resolve-коммитами, проверками и правками совместимости. Эта ветка временная и удаляется после merge.</p></div></div></main><footer class="VPDocFooter" data-v-ef3a4dda data-v-07d71ff1><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-07d71ff1><span class="visually-hidden" id="doc-footer-aria-label" data-v-07d71ff1>Pager</span><div class="pager" data-v-07d71ff1><a class="VPLink link pager-link prev" href="/template-sync-strategy/concepts/why" data-v-07d71ff1><!--[--><span class="desc" data-v-07d71ff1>Previous page</span><span class="title" data-v-07d71ff1>Зачем это нужно</span><!--]--></a></div><div class="pager" data-v-07d71ff1><a class="VPLink link pager-link next" href="/template-sync-strategy/concepts/rules" data-v-07d71ff1><!--[--><span class="desc" data-v-07d71ff1>Next page</span><span class="title" data-v-07d71ff1>Правила процесса</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"concepts_model.md\":\"C805A9As\",\"concepts_rules.md\":\"QraT4IhZ\",\"concepts_why.md\":\"akfw90Fj\",\"index.md\":\"C5Q_ZnE3\",\"overview.md\":\"DOeHHuHO\",\"reference_cheatsheet.md\":\"0TzKSaSb\",\"reference_glossary.md\":\"DLD-b2Ke\",\"reference_troubleshooting.md\":\"BrYSpYuW\",\"setup_clean-repository.md\":\"CPqmBfph\",\"setup_existing-master-migration.md\":\"BQ5VImS9\",\"workflows_resolve-conflicts.md\":\"CujNWdsi\",\"workflows_review-and-merge.md\":\"D5KhlAbu\",\"workflows_update-template.md\":\"C8s1FFCq\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Template Sync Strategy\",\"description\":\"Управляемое обновление проектов от шаблона\",\"base\":\"/template-sync-strategy/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"sidebar\":[{\"text\":\"Введение\",\"items\":[{\"text\":\"Обзор\",\"link\":\"/overview\"},{\"text\":\"Зачем это нужно\",\"link\":\"/concepts/why\"},{\"text\":\"Модель веток\",\"link\":\"/concepts/model\"},{\"text\":\"Правила процесса\",\"link\":\"/concepts/rules\"}]},{\"text\":\"Настройка\",\"items\":[{\"text\":\"Новый проект от шаблона\",\"link\":\"/setup/clean-repository\"},{\"text\":\"Миграция существующего master\",\"link\":\"/setup/existing-master-migration\"}]},{\"text\":\"Рабочие процессы\",\"items\":[{\"text\":\"Обычное обновление шаблона\",\"link\":\"/workflows/update-template\"},{\"text\":\"Решение конфликтов\",\"link\":\"/workflows/resolve-conflicts\"},{\"text\":\"Review и merge\",\"link\":\"/workflows/review-and-merge\"}]},{\"text\":\"Справочник\",\"items\":[{\"text\":\"Памятка\",\"link\":\"/reference/cheatsheet\"},{\"text\":\"Troubleshooting\",\"link\":\"/reference/troubleshooting\"},{\"text\":\"Глоссарий\",\"link\":\"/reference/glossary\"}]}],\"socialLinks\":[]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>
</body>
</html>