Konflikt
Z UMP
(uzupełnienie - chyba wszystko) |
(→Jak usunąć konflikt?: dodanie jednej pustej linii w treści przykładu) |
||
Linia 40: | Linia 40: | ||
(49.95304,20.96012),(49.95313,20.96002) | (49.95304,20.96012),(49.95313,20.96002) | ||
[END] | [END] | ||
- | + | ||
[POLYLINE] | [POLYLINE] | ||
Type=0x16 | Type=0x16 |
Wersja z dnia 20:33, 23 lis 2013
Spis treści |
Co to jest konflikt?
Konflikt powstaje, gdy dwóch (lub więcej) edytorów próbuje zapisać coś w tym samym pliku w tym samym miejscu - nie mogą tego zrobić w tym samym czasie - pierwszy edytor wrzuca swoje poprawki, później drugi edytor próbuje swoje dane zapisać i powstaje konflikt.
Konflikt nie grozi osobom bez praw zapisu - to nie one zapisują zmiany, tylko pełnoprawni edytorzy - może zdarzyć się, że diffy przygotowane przez osobę bez uprawnień mogą doprowadzić do powstania konfliktu - gdy ktoś inny też edytował ten sam obiekt, a osoba z pełnymi uprawnieniami zaktualizuje źródła przed zapisaniem danych przez drugiego edytora.
Jak wygląda konflikt?
Tu przykład z TARNOW.drogi.txt - próba wygenerowania konfliktu z jednym z edytorów. Udało się. Każdy konflikt będzie tak oznaczony:
[POLYLINE] Type=0x16 <<<<<<< TARNOW.drogi.txt Data0=(49.95279,20.95959),(49.95288,20.95972),(49.95290,20.95990), (49.95290,20.96005),(49.95293,20.96011),(49.95296,20.96019), (49.95304,20.96012),(49.95313,20.96002) ======= Data0=(49.95279,20.95959),(49.95283,20.95969),(49.95281,20.95982), (49.95287,20.95983),(49.95290,20.95990),(49.95288,20.96005), (49.95296,20.96019),(49.95304,20.96012),(49.95313,20.96002) >>>>>>> 1.1073 [END]
To są dwie różne wersje obiektu - tego samego obiektu. Konflikt nie powstanie, gdy będziecie edytować różne obiekty w tym samym pliku - Wasze zmiany zostaną uwzględnione. W tym wypadku to ścieżka, która została narysowana by mieć co pokazać w przykładzie. Pierwszy edytor trochę ją powyginał (nowe punkty, przesunięcia punktów), drugi zrobił też to samo - też powyginał. Pierwszy wrzucił zmiany na serwer, w tym czasie drugi edytor był gotowy do wrzucenia i rozpoczął operację zapisu po zakończeniu zapisu przez pierwszego edytora. W tym momencie drugiemu edytorowi CVS zgłosił błąd.
Czy muszę usuwać konflikt?
Nie, nie musisz - nie będziesz mógł wtedy zapisać swoich danych na serwerze. Konflikt tak na prawdę powstaje u Ciebie - w Twoich źródłach. CVS zanim pozwoli wykonać commit musi mieć dane bez konfliktów, dopóki nie usuniesz konfliktu - nie zapiszesz danych.
Jak usunąć konflikt?
Najprościej przerobić powyższy fragment na coś takiego:
[POLYLINE] Type=0x16 Data0=(49.95279,20.95959),(49.95288,20.95972),(49.95290,20.95990), (49.95290,20.96005),(49.95293,20.96011),(49.95296,20.96019), (49.95304,20.96012),(49.95313,20.96002) [END] [POLYLINE] Type=0x16 Data0=(49.95279,20.95959),(49.95283,20.95969),(49.95281,20.95982), (49.95287,20.95983),(49.95290,20.95990),(49.95288,20.96005), (49.95296,20.96019),(49.95304,20.96012),(49.95313,20.96002) [END]
czyli usunąć linie >>>>>>> 1.1073, <<<<<<< TARNOW.drogi.txt oraz separującą wersje - złożoną ze znaków równości oraz dorobić nagłówki linii. Zmontować mapę i podjąć decyzję na żywym organizmie, a później wysłać zmiany.
Bardzo rzadko zdarzy się, że konflikt będzie dotyczył tej samej wersji obiektu - dwie osoby zrobią to samo, dodadzą punkt w tym samym miejscu, np. dorobią brakujące skrzyżowanie na przecięciu dwóch linii - wtedy dwie wersje będą takie same (czy na pewno?). W tym wypadku wystarczy jedną odrzucić.