- добавлены каноны и VitePress-сайт стратегии обновления шаблонов - подключена карточка документации на главной странице - добавлены сборочные скрипты, Caddy-маршрут и Docker-сборка - добавлена git-иконка для карточки и сгенерированы публичные артефакты
8 lines
7.8 KiB
JavaScript
8 lines
7.8 KiB
JavaScript
import{_ as a,o as e,c as i,ae as t}from"./chunks/framework.B1nRs-GM.js";const k=JSON.parse('{"title":"Решение конфликтов","description":"Почему конфликты при обновлении шаблона должны решаться только в sync-ветках.","frontmatter":{"title":"Решение конфликтов","description":"Почему конфликты при обновлении шаблона должны решаться только в sync-ветках."},"headers":[],"relativePath":"workflows/resolve-conflicts.md","filePath":"workflows/resolve-conflicts.md"}'),n={name:"workflows/resolve-conflicts.md"};function l(p,s,o,h,d,c){return e(),i("div",null,[...s[0]||(s[0]=[t(`<div style="display:none;" hidden="true" aria-hidden="true">Are you an LLM? You can read better optimized documentation at /template-sync-strategy/workflows/resolve-conflicts.md for this page in Markdown format</div><h1 id="решение-конфликтов" tabindex="-1">Решение конфликтов <a class="header-anchor" href="#решение-конфликтов" aria-label="Permalink to "Решение конфликтов""></a></h1><p>Конфликт при обновлении шаблона — нормальная ситуация. Важно не то, что конфликт возник, а где он возник.</p><p>Правильное место для конфликтов — временная ветка <code>sync/*</code>.</p><h2 id="пример" tabindex="-1">Пример <a class="header-anchor" href="#пример" aria-label="Permalink to "Пример""></a></h2><p>Шаблон поменял строку в <code>README.md</code>:</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>Base template version: template-conflict-v10</span></span></code></pre></div><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>Base template version: application-conflict-v10</span></span></code></pre></div><p>При merge <code>origin/template</code> в <code>sync/update-template-v10</code> появится конфликт:</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><<<<<<< HEAD</span></span>
|
||
<span class="line"><span>Base template version: application-conflict-v10</span></span>
|
||
<span class="line"><span>=======</span></span>
|
||
<span class="line"><span>Base template version: template-conflict-v10</span></span>
|
||
<span class="line"><span>>>>>>>> origin/template</span></span></code></pre></div><p>Это правильное место конфликта: <code>master</code> ещё не изменён, <code>template</code> остаётся чистой, а итоговое решение можно проверить в PR/MR.</p><h2 id="как-решать" tabindex="-1">Как решать <a class="header-anchor" href="#как-решать" aria-label="Permalink to "Как решать""></a></h2><ol><li>Оставайтесь в ветке <code>sync/*</code>.</li><li>Разберите конфликт по смыслу: что должно остаться в приложении после обновления шаблона.</li><li>Удалите conflict markers.</li><li>Проверьте проект локально.</li><li>Закоммитьте результат.</li></ol><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;"> status</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> .</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> commit</span></span></code></pre></div><h2 id="что-нельзя-делать" tabindex="-1">Что нельзя делать <a class="header-anchor" href="#что-нельзя-делать" aria-label="Permalink to "Что нельзя делать""></a></h2><p>Нельзя переносить conflict resolve в <code>template</code>.</p><p><code>template</code> должна совпадать с шаблоном. Если решение конфликта попадёт туда, она перестанет быть эталоном и дальнейшие обновления станут менее предсказуемыми.</p><p>Нельзя решать конфликт прямо в <code>master</code>, потому что основная ветка приложения должна получать только проверенный результат через PR/MR.</p><h2 id="что-проверить-после-resolve" tabindex="-1">Что проверить после resolve <a class="header-anchor" href="#что-проверить-после-resolve" aria-label="Permalink to "Что проверить после resolve""></a></h2><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;"> status</span></span></code></pre></div><p>Посмотрите diff относительно текущего приложения:</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:#005CC5;--shiki-dark:#79B8FF;"> --no-pager</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> diff</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> origin/master...HEAD</span></span></code></pre></div><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:#005CC5;--shiki-dark:#79B8FF;"> --no-pager</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> log</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --oneline</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --graph</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --decorate</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --all</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --max-count=50</span></span></code></pre></div>`,26)])])}const g=a(n,[["render",l]]);export{k as __pageData,g as default};
|