Konflikt
Z UMP
(pierwsza wersja) |
(→Jak wygląda konflikt?) |
||
(Nie pokazano 9 wersji pośrednich.) | |||
Linia 4: | Linia 4: | ||
== Co to jest konflikt? == | == Co to jest konflikt? == | ||
- | '''Konflikt''' powstaje, gdy dwóch | + | '''Konflikt''' powstaje, gdy dwóch edytorów próbuje zapisać coś w tym samym pliku na tym samym obiekcie (lub na końcu pliku) - 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 [[diff|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. | + | Konflikt nie grozi osobom bez praw zapisu - to nie one zapisują zmiany, tylko pełnoprawni edytorzy - może zdarzyć się, że [[diff|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. |
+ | |||
+ | W wyniku edycji może również dojść do [[Nadpisanie|nadpisania danych]] i nie ma to związku z konfliktem. | ||
== Jak wygląda konflikt? == | == Jak wygląda konflikt? == | ||
+ | |||
+ | Tu przykład z TARNOW.drogi.txt - próba wygenerowania konfliktu z jednym z edytorów, by mieć przykład do artykułu - po kilku próbach 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 lub obszaru na końcu pliku. 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. | ||
+ | |||
+ | Najczęstszym przypadkiem konfliktu (i najłatwiejszym do usunięcia) jest jednak sytuacja, gdy 2 osoby jednocześnie dodały jakieś nowe obiekty. Wówczas na końcu pliku pojawi się coś podobnego: | ||
+ | <<<<<<< TRZEBNICA.drogi.txt | ||
+ | [POLYLINE] | ||
+ | Type=0x7 | ||
+ | Data0=(51.235456,16.884174),(51.234480,16.884424) | ||
+ | Miasto=Raków | ||
+ | [END] | ||
+ | |||
+ | [POLYLINE] | ||
+ | Type=0xa | ||
+ | Data0=(51.402141,16.298860),(51.402894,16.298511),(51.403197,16.301162),(51.403075,16.301541) | ||
+ | Miasto=Siedlce | ||
+ | [END] | ||
+ | ======= | ||
+ | [POLYLINE] | ||
+ | Type=0xa | ||
+ | Label=Wrocławska | ||
+ | Data0=(51.244600,16.870008),(51.244844,16.869684),(51.245083,16.869327) | ||
+ | Miasto=Uraz | ||
+ | [END] | ||
+ | >>>>>>> 1.223 | ||
+ | |||
+ | (różnica względem poprzedniego: po obu stronach konfliktu mamy pełne obiekty (i kompletnie inne), a linia "====" nie przecina obiektu w środku), W takim wypadku wystarczy w edytorze tekstowym usunąć linie <<< === i >>>. | ||
+ | |||
+ | == 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. <!-- nie jest to prawda --> | ||
+ | |||
+ | == 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''' | ||
+ | * linię separującą wersje - złożoną ze znaków równości | ||
+ | oraz dorobić brakujące linie definiujące obiekty (END oraz POLYLINE), po czym KONIECZNIE zmontować mapę, obejrzeć to miejsce i podjąć decyzję na żywym organizmie (najprawdopodobniej skasować jeden z obiektów, być może także przesunąć kilka punktów w pozostawianym), a później wysłać zmiany. | ||
+ | |||
+ | Bardzo rzadko zdarzy się, że konflikt będzie dotyczył tej samej wersji obiektu (jak w przykładzie powyżej) - 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?'' '''tak - sprawdzone empirycznie'''). W tym wypadku wystarczy jedną odrzucić. |
Aktualna wersja
Spis treści |
Co to jest konflikt?
Konflikt powstaje, gdy dwóch edytorów próbuje zapisać coś w tym samym pliku na tym samym obiekcie (lub na końcu pliku) - 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.
W wyniku edycji może również dojść do nadpisania danych i nie ma to związku z konfliktem.
Jak wygląda konflikt?
Tu przykład z TARNOW.drogi.txt - próba wygenerowania konfliktu z jednym z edytorów, by mieć przykład do artykułu - po kilku próbach 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 lub obszaru na końcu pliku. 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.
Najczęstszym przypadkiem konfliktu (i najłatwiejszym do usunięcia) jest jednak sytuacja, gdy 2 osoby jednocześnie dodały jakieś nowe obiekty. Wówczas na końcu pliku pojawi się coś podobnego:
<<<<<<< TRZEBNICA.drogi.txt [POLYLINE] Type=0x7 Data0=(51.235456,16.884174),(51.234480,16.884424) Miasto=Raków [END] [POLYLINE] Type=0xa Data0=(51.402141,16.298860),(51.402894,16.298511),(51.403197,16.301162),(51.403075,16.301541) Miasto=Siedlce [END] ======= [POLYLINE] Type=0xa Label=Wrocławska Data0=(51.244600,16.870008),(51.244844,16.869684),(51.245083,16.869327) Miasto=Uraz [END] >>>>>>> 1.223
(różnica względem poprzedniego: po obu stronach konfliktu mamy pełne obiekty (i kompletnie inne), a linia "====" nie przecina obiektu w środku), W takim wypadku wystarczy w edytorze tekstowym usunąć linie <<< === i >>>.
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
- linię separującą wersje - złożoną ze znaków równości
oraz dorobić brakujące linie definiujące obiekty (END oraz POLYLINE), po czym KONIECZNIE zmontować mapę, obejrzeć to miejsce i podjąć decyzję na żywym organizmie (najprawdopodobniej skasować jeden z obiektów, być może także przesunąć kilka punktów w pozostawianym), a później wysłać zmiany.
Bardzo rzadko zdarzy się, że konflikt będzie dotyczył tej samej wersji obiektu (jak w przykładzie powyżej) - 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? tak - sprawdzone empirycznie). W tym wypadku wystarczy jedną odrzucić.