103 lines
3.5 KiB
Markdown
103 lines
3.5 KiB
Markdown
|
|
---
|
|||
|
|
url: /template-sync-strategy/reference/troubleshooting.md
|
|||
|
|
description: Типовые ошибки при обновлении проекта от шаблона и способы диагностики.
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Troubleshooting
|
|||
|
|
|
|||
|
|
## fatal: отказ слияния несвязанных историй изменений
|
|||
|
|
|
|||
|
|
Ошибка:
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
fatal: отказ слияния несвязанных историй изменений
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Причина: `master` приложения не был создан от `template`, поэтому у веток нет общего предка.
|
|||
|
|
|
|||
|
|
Решение: выполнить одноразовую миграцию через `sync/bootstrap-template` по инструкции [Миграция существующего master](../setup/existing-master-migration.md).
|
|||
|
|
|
|||
|
|
Коротко:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git switch -c sync/bootstrap-template origin/master
|
|||
|
|
git merge --allow-unrelated-histories origin/template
|
|||
|
|
git push -u origin sync/bootstrap-template
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## --ff-only падает на template
|
|||
|
|
|
|||
|
|
Ошибка возникает при команде:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git merge --ff-only templates/master
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Причина: в `template` появились коммиты, которых нет в шаблоне. Значит ветка перестала быть чистым слепком.
|
|||
|
|
|
|||
|
|
Что проверить:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git fetch templates
|
|||
|
|
git --no-pager log --oneline --graph --decorate templates/master..template
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Решение зависит от причины. Не продолжайте обновление, пока не станет понятно, какие локальные коммиты попали в `template`.
|
|||
|
|
|
|||
|
|
## Пустой diff в sync-ветке
|
|||
|
|
|
|||
|
|
Симптом:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git --no-pager diff --stat origin/master...HEAD
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
не показывает изменений.
|
|||
|
|
|
|||
|
|
Возможные причины:
|
|||
|
|
|
|||
|
|
* в шаблоне нет новых изменений;
|
|||
|
|
* `origin/template` не был обновлён;
|
|||
|
|
* `origin/template` не был влит в `sync/*`;
|
|||
|
|
* sync-ветка создана не от актуального `origin/master`.
|
|||
|
|
|
|||
|
|
Что проверить:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git fetch origin
|
|||
|
|
git fetch templates
|
|||
|
|
git --no-pager log --oneline -1 origin/template
|
|||
|
|
git --no-pager log --oneline -1 templates/master
|
|||
|
|
git --no-pager log --oneline --graph --decorate --all --max-count=50
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Случайно включили squash
|
|||
|
|
|
|||
|
|
Если sync-PR/MR уже влит squash-merge, история шаблона могла не сохраниться как нормальная merge-связь.
|
|||
|
|
|
|||
|
|
Что сделать:
|
|||
|
|
|
|||
|
|
* зафиксировать факт в описании проекта;
|
|||
|
|
* проверить, видит ли Git последующие обновления шаблона без повторного применения старых изменений;
|
|||
|
|
* при следующем обновлении внимательно смотреть diff и конфликты;
|
|||
|
|
* для будущих sync-PR/MR отключить squash.
|
|||
|
|
|
|||
|
|
Если ситуация стала неуправляемой, может потребоваться отдельная техническая миграция истории.
|
|||
|
|
|
|||
|
|
## cannot run less
|
|||
|
|
|
|||
|
|
Ошибка:
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
cannot run less
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Причина: Git пытается открыть pager `less`, которого нет в системе.
|
|||
|
|
|
|||
|
|
Решение: использовать `git --no-pager`:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git --no-pager log --oneline --graph --decorate --all --max-count=50
|
|||
|
|
git --no-pager diff template...master
|
|||
|
|
```
|