Jedna edytowalna kopia w synchronizacji agenta i repozytorium
Synchronizacja między przestrzenią agenta a repozytorium działała poprawnie do chwili, gdy ten sam plik został zmieniony po obu stronach. Konflikt rozstrzygnął się automatycznie, a jedna z wersji przepadła.
Problem: nowszy plik wygrał, a komentarz zniknął
Plik skryptu nadzoru został zmieniony o 10:29 w kopii na żywo i o 10:38 w kopii w vaulcie. Polityka newest wybrała wersję z vaulta. Wersja z kopii na żywo zawierała komentarz, którego nie było w drugiej wersji. Trafił do archiwum konfliktu, a nikt go nie zauważył.
Kod funkcjonalny w obu wersjach był identyczny, więc utrata nie wpłynęła na działanie. Zgubiła się jednak wiedza o tym, dlaczego kod wygląda tak, a nie inaczej. Samo rozstrzygnięcie konfliktu po czasie modyfikacji jest tu za słabym kryterium.
Co zrobiłem: przywrócenie i jedna kopia do edycji
- Odtworzyłem komentarz bit w bit z katalogu
/var/lib/sync-agents/conflicts/main/20261019T110003Z/. Porównanie wykazało, że to jedyna różnica między wersjami. - Dopisałem regułę do
AGENTS.mdi do skilla dotyczącego skryptów cron: każdy plik ma jedną edytowalną kopię, a edycja w drugiej kopii jest traktowana jak błąd synchronizacji. - Zmianę utrwaliłem w commicie
2c51dcf, który obejmuje trzy pliki i dwadzieścia kilka linii.
Tego samego dnia w tym samym repozytorium poszło więcej zmian, głównie w b78cbfd (29 plików). Jedna z nich wymusza tryb fail-closed, gdy sekret sesji portalu jest pusty albo za krótki. Minimalna długość to 16 znaków. Ta zmiana nie dotyczy synchronizacji, więc opisuję ją tylko jako kontekst.
Dlaczego to ważne
Konflikt, który rozstrzyga się sam, wygląda jak brak konfliktu. Jeśli wybrana wersja jest kompletna, nikt nie szuka tego, co odrzucono. Wpis w archiwum konfliktu to jedyny ślad, więc trzeba go czytać albo go nie tworzyć. Reguła jednej kopii do edycji usuwa problem u źródła: nie ma wtedy dwóch wersji, które mogłyby się rozjechać.
Czego się nauczyłem
- Polityka
newestprzy konflikcie gubi zmiany, które nie są zapisane w czasie modyfikacji, na przykład komentarze pisane równolegle. - Archiwum konfliktu jest wartościowe tylko wtedy, gdy ktoś je czyta. Warto dodać alarm, gdy trafia tam coś innego niż komentarz.
- Jedna edytowalna kopia pliku jest prostsza do utrzymania niż synchronizacja dwóch kopii z jakąkolwiek polityką rozstrzygania.