[2026-09-26] eagle: merge conflict — review needed
This commit is contained in:
commit
cdbd3f65f4
3 files changed
+122
No files matched your search
@@ -0,0 +1,84 @@
|
|||||||
|
---
|
||||||
|
title: Vault sync — маркеры конфликта в music-tags-review/1-needs-decision.md
|
||||||
|
type: incident
|
||||||
|
namespace: family
|
||||||
|
tags: [vault, git, sync, conflict, music-tags, eagle, whale, syncthing]
|
||||||
|
status: resolved
|
||||||
|
---
|
||||||
|
|
||||||
|
# Маркеры merge-конфликта в `1-needs-decision.md` (2026-09-26)
|
||||||
|
|
||||||
|
## Симптом
|
||||||
|
|
||||||
|
Тик sync 11:00 UTC: три SHA равны (`dfa5240d`), `git status --porcelain` пуст в обоих клонах,
|
||||||
|
но `grep '^<<<<<<<'` дал **8 строк** — по 4 маркера в `1-needs-decision.md` в `/vault`
|
||||||
|
и `/obsidian-syncthing`. Маркеры уже **закоммичены и разъехались по всем трём клонам**
|
||||||
|
(в Obsidian заметка выглядит как каша из `<<<<<<< HEAD` / `>>>>>>> nas/main`).
|
||||||
|
|
||||||
|
Верхний коммит bare до фикса:
|
||||||
|
|
||||||
|
```
|
||||||
|
dfa5240d Alexey Martemyanov <mallexxx@gmail.com> [2026-09-26] eagle: merge conflict — review needed
|
||||||
|
parents: aa0d26a2 (1-й, HEAD-сторона) 50e81dc (2-й, nas/main = сторона телефона)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Механика — снова два писателя одного файла (класс «гонка автоматизаций», как watchlist 09-22)
|
||||||
|
|
||||||
|
Обе стороны пошли от одной базы `3f48512f` (4 секции, все пункты `[ ]`) **в одну и ту же минуту**:
|
||||||
|
|
||||||
|
| Сторона | Коммит | Время (UTC) | Что сделала |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Eagle/`whale` | `aa0d26a2` | 10:56:14 | удалил секции `!A Not sorted` (Нашествие), Kazantip, `!Детские`; `Файлов: 4 → 1`; пункт `i am instructor` оставил в базовом виде (`[ ]`, `_title<-filename_`) |
|
||||||
|
| телефон (Syncthing → `nas/main`) | `81d15fa6` / `50e81dc` | 10:55:44 / 10:55:50 | удалил строку Нашествия, отметил `[x]` Kazantip (`artist: Kazantip 2008`, `title: Beat`) и `[x]` i am instructor (`I am instructor`, `artist: Techno Beat`); `!Детские` оставил `[ ]` |
|
||||||
|
|
||||||
|
Затем Eagle мерджил `nas/main` своим `aa0d26a2`, получил конфликт и по своему алгоритму
|
||||||
|
закоммитил файл **вместе с маркерами** (`dfa5240d`) и запушил в bare. Наши фазы 10:56 / 11:00
|
||||||
|
втянули его fast-forward в `/vault` и `/obsidian-syncthing`. Git-синк при этом штатный:
|
||||||
|
`exit 0`, `Pushed ✓` ×3, три SHA равны, `git status` пуст — на маркеры он не реагирует.
|
||||||
|
|
||||||
|
Конфликтные регионы по существу были тривиальны: HEAD-сторона **не содержала уникального
|
||||||
|
контента** (только удаления секций и устаревшее состояние пункта), сторона телефона содержала
|
||||||
|
решения Алексея (`[x]` + проставленные значения).
|
||||||
|
|
||||||
|
## Разрешение (Taiga, объединением, ничего не удаляя)
|
||||||
|
|
||||||
|
Взят **контент стороны `nas/main` (телефон)** — `50e81dc:personal/plans/music-tags-review/1-needs-decision.md`,
|
||||||
|
байт-в-байт (md5 `03c6c9ca3137abe9074cda0303743082`), маркеры убраны.
|
||||||
|
|
||||||
|
Почему телефон, а не whale:
|
||||||
|
|
||||||
|
- у телефона `[x]`-решения Алексея и проставленные `artist`/`title` — у whale по этому пункту
|
||||||
|
состояние **до** решения (`[ ]`, `i am instructor` строчными, `_title<-filename_`); взятие whale потеряло бы решение;
|
||||||
|
- в версии whale удалены секции, включая `!Детские` (`Из чего же.mp3`) — там пункт всё ещё `[ ]`,
|
||||||
|
т.е. незакрытое решение; удалять его молча нельзя;
|
||||||
|
- Нашествие удалено **обеими** сторонами — не восстанавливалось.
|
||||||
|
|
||||||
|
Счётчик `**Файлов:** 4` оставлен как на стороне телефона (не пересчитывался — файл активно
|
||||||
|
правится автоматизацией, минимальная дельта безопаснее).
|
||||||
|
|
||||||
|
Коммит Taiga:
|
||||||
|
|
||||||
|
```
|
||||||
|
563a7fc taiga-vault: resolve merge conflict markers in personal/plans/music-tags-review/1-needs-decision.md
|
||||||
|
(union: nas/phone side kept — Alexey's [x] decisions and pending !Детские item preserved, nothing deleted)
|
||||||
|
→ file:///vault.git dfa5240..563a7fc main -> main
|
||||||
|
```
|
||||||
|
|
||||||
|
## Проверка (после фикса)
|
||||||
|
|
||||||
|
- `grep -c '^<<<<<<<|^=======|^>>>>>>>'` по файлу → **0**; маркеров по всем `.md` в `/vault` и `/obsidian-syncthing` → **0**
|
||||||
|
- md5 файла в `/vault` = md5 версии `50e81dc` из bare → `03c6c9ca…`
|
||||||
|
- три SHA равны (`563a7fc`), `git status --porcelain` пуст, `Push failed` 0, хук-ошибка (host-путь) — известная, безвредная
|
||||||
|
|
||||||
|
## Хвосты и рекомендации владельцу
|
||||||
|
|
||||||
|
- **Корень — гонка двух писателей** у `personal/plans/music-tags-review/*`: `whale`/Eagle
|
||||||
|
(обрабатывает решения, удаляет закрытые пункты) и телефон через Syncthing (Алексей ставит `[x]`
|
||||||
|
и вписывает значения). Файл правится обоими в течение одной минуты → Eagle мерджит с маркерами.
|
||||||
|
Устранение: разнести проходы по времени либо сделать проход `whale` идемпотентным
|
||||||
|
(не удалять пункт, пока он не `[x]` на стороне телефона), либо не править этот файл на телефоне.
|
||||||
|
- Родственный шум по тому же файлу за день: две конфликт-копии Syncthing
|
||||||
|
(`…sync-conflict-20260926-150525-XJRJQB2.md`, `…-165021-C6DYBCZ.md`) — см.
|
||||||
|
`2026-09-26-syncthing-conflict-1-needs-decision.md`. **Не удалять** без подтверждения владельца.
|
||||||
|
- Заметка создана автоматически (cron-тик sync-vault); контент решён объединением, финальное
|
||||||
|
слово по содержимому файла — за Алексеем.
|
||||||
@@ -8,8 +8,46 @@ status: awaiting-approval
|
|||||||
|
|
||||||
# Требует решения
|
# Требует решения
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
**Файлов:** 0
|
**Файлов:** 0
|
||||||
|
=======
|
||||||
|
**Файлов:** 4
|
||||||
|
>>>>>>> nas/main
|
||||||
|
|
||||||
> [!info] Исполнителя неоткуда взять — теги уничтожены, в путях его нет.
|
> [!info] Исполнителя неоткуда взять — теги уничтожены, в путях его нет.
|
||||||
|
|
||||||
[[music-tags-review|← к обзору]]
|
[[music-tags-review|← к обзору]]
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
|
||||||
|
## !A Not sorted
|
||||||
|
|
||||||
|
`!A Not sorted` — 1 файлов
|
||||||
|
|
||||||
|
|
||||||
|
## !Pop, Club, Любэ/!Radio/v 2009-03 mIr.vEsNЫ/3 clubNИчкоvo.E
|
||||||
|
|
||||||
|
`!Pop, Club, Любэ/!Radio/v 2009-03 mIr.vEsNЫ/3 clubNИчкоvo.E` — 1 файлов
|
||||||
|
|
||||||
|
- [x] **Kazantip 2008 - Beat (zvukoff.ru).mp3**
|
||||||
|
- `artist`: Kazantip 2008
|
||||||
|
- title: Beat
|
||||||
|
|
||||||
|
## !Pop, Club, Любэ/!Radio/y OOF
|
||||||
|
|
||||||
|
`!Pop, Club, Любэ/!Radio/y OOF` — 1 файлов
|
||||||
|
|
||||||
|
- [x] **i am instructor.mp3**
|
||||||
|
- `title`: — → **I am instructor**
|
||||||
|
- artist: Techno Beat
|
||||||
|
|
||||||
|
## !Детские
|
||||||
|
|
||||||
|
`!Детские` — 1 файлов
|
||||||
|
|
||||||
|
- [ ] **Из чего же.mp3**
|
||||||
|
- `title`: Èç ÷åãî æå, èç ÷åãî æå, èç ÷åãî æå → **Из чего же, из чего же, из чего же**
|
||||||
|
- `artist`: Íåèçâåñòíûé èñïîëíèòåëü → **—**
|
||||||
|
- `album`: Íåèçâåñòíîå íàçâàíèå → **—**
|
||||||
|
- _encoding/cleanup only_
|
||||||
|
>>>>>>> nas/main
|
||||||
Regular → Executable
File mode changed.
Reference in new issue
Block a user