Do konfliktu kontroli wersji dochodzi, gdy ktoś próbuje przesłać zmiany wykonane w lokalnej wersji swojego projektu, których nie można pogodzić z najnowszym źródłem prawdy w systemie kontroli wersji.
Może się tak stać z wielu przyczyn, najczęściej gdy ktoś wprowadza zmiany we fragmencie projektu zespołowego, a inny członek zespołu już wprowadził zmiany w tym fragmencie. Przesłanie zmian, zanim nie zostanie wykonana synchronizacja ze zmianami współpracowników, powoduje konflikt.
Najlepszy sposób na uniknięcie konfliktów to włączenie opcji automatycznego wyprowadzenia i automatycznego cofania zmian. Postępuj zgodnie z najlepszymi praktykami kontroli wersji, aby ograniczyć konflikty w projekcie i lepiej zrozumieć, jak działa kontrola wersji.
Ostrzeżenia zapobiegające konfliktom dzięki automatycznemu wyprowadzeniu i automatycznemu cofaniu zmian
System Unreal Revision Control pomaga w unikaniu większości konfliktów, w momencie tworzenia projektu domyślnie włączając automatyczne wyprowadzenie i cofanie wersji przy użyciu kontroli wersji.
Te funkcje działają razem, aby automatycznie podejmować próbę wyprowadzenia zasobu, gdy została w nim wprowadzona zmiana, a także automatycznie cofać zmianę, jeśli wyprowadzenie się nie powiedzie. Aby zapobiec konfliktowi, system generuje ostrzeżenie o takiej sytuacji.
Ostrzeżenie jest generowane najczęściej w dwóch sytuacjach:
Próba wprowadzenia zmian w zasobach wyprowadzonych przez innego członka zespołu
Gdy próbujesz wprowadzić zmiany w zasobie, który jest obecnie wyprowadzony przez innego członka zespołu, takie zmiany są automatycznie cofane, aby uniemożliwić ci modyfikację zasobów, które inny członek wyewidencjonował dla siebie.
W takim przypadku nie musisz nic robić, ponieważ system uniknął konfliktu. Jeśli jednak chcesz wprowadzić zmiany w danym zasobie, najlepiej skoordynować pracę z drugą osobą, aby wprowadziła zasób, zsynchronizować jej zmiany i dopiero potem wprowadzić własne.
Gdy do takiej sytuacji dojdzie po raz pierwszy, zobaczysz komunikat ostrzegawczy informujący o tym, które z twoich zmian zostały wycofane i kto wyprowadził zasób. Jeśli chcesz, aby ten komunikat wyświetlał się za każdym razem, usuń zaznaczenie opcji “Nie pokazuj ponownie”.
Zobaczysz wyskakujące powiadomienie za każdym razem, gdy wystąpi taka sytuacja.
Próba wprowadzenia zmian w zasobach, które nie zostały zsynchronizowane z ostatnią wersją
Gdy próbujesz wprowadzić zmiany w zasobie, który nie jest obecnie zsynchronizowany z najnowszą wersją, takie zmiany są automatycznie cofane, aby uniemożliwić ci modyfikację zasobów, których nie możesz potem wprowadzić.
W takim przypadku wystarczy, że zsynchronizujesz zasób z najnowszą wersją i wprowadzisz swoje zmiany.
Gdy do takiej sytuacji dojdzie po raz pierwszy, zobaczysz komunikat ostrzegawczy informujący o tym, które z twoich zmian zostały wycofane. Jeśli chcesz, aby ten komunikat wyświetlał się za każdym razem, usuń zaznaczenie opcji “Nie pokazuj ponownie”.
Zobaczysz wyskakujące powiadomienie za każdym razem, gdy wystąpi taka sytuacja.
Komunikaty o błędach informujące o konflikcie
Do konfliktów dochodzi najczęściej wtedy, gdy opcje Automatyczne wyprowadzenie i Automatyczne cofanie są wyłączone. Możliwe okoliczności, które powodują konflikty w kontroli wersji w systemie Unreal Revision Control:
- Niewystarczająco częste synchronizowanie z najnowszą wersją
- Wprowadzanie zmian, zanim najpierw wyprowadzi się zasób
- Praca offline
W poniższych sekcjach omówiono błędy konfliktu i najczęściej spotykane przyczyny.
Konflikty braku synchronizacji z najnowszą wersją
Ten typ konfliktu występuje, gdy próbujesz zsynchronizować z najnowszą wersją lub wprowadzić zmiany, przy czym zmiany zostały wprowadzone w zasobie, który został zmodyfikowany i zwrócony przez kogoś innego w migawce, która jest nowsza niż ta, z którą ostatnio była zsynchronizowana twoja wersja.
Wówczas występuje konflikt, ponieważ twoje zmiany są wprowadzone w nieaktualnej wersji zasobu.
W takim przypadku wyświetli się komunikat informujący, które zasoby pozostają w konflikcie i kto wprowadził najnowsze zmiany, z którymi musisz zsynchronizować pracę. Jedyne, co możesz zrobić, aby rozwiązać konflikt, to zsynchronizować najnowsze zmiany i nadpisać własne.
Gdy zsynchronizujesz pracę z najnowszymi zmianami i nadpiszesz własne, możesz wyprowadzić zasoby, które chcesz zmodyfikować, i odpowiednio wdrożyć i wprowadzić swoje zmiany.
Konflikty wyprowadzonych zasobów
Inny typ konfliktu występuje, gdy wprowadzisz zmiany do zasobu aktualnie wyprowadzonego przez inną osobę i próbujesz zsynchronizować z najnowszą wersją lub wprowadzić zmiany.
Do tego konfliktu dochodzi, gdy wprowadzisz zmiany w czymś, czego nie masz prawa edytować, ponieważ zostało wyprowadzone na wyłączność przez innego członka zespołu.
W takim przypadku wyświetli się błąd informujący, które niewyprowadzone zasoby zostały zmienione, wraz z instrukcjami, jak skoordynować pracę z drugim członkiem zespołu.
Jeśli chcesz odrzucić swoją zmianę, wycofaj zmiany w poszczególnych zasobach z konfliktem przy użyciu menu kontekstowego kontroli wersji i spróbuj jeszcze raz zsynchronizować lub wprowadzić pracę.
Konflikty zduplikowanych zasobów
Do trzeciego, rzadkiego typu konfliktu dochodzi, gdy dwóch członków zespołu przypadkowo utworzy zasoby o tej samej nazwie i ścieżce pliku, a następnie spróbuje niezależnie zapisać i wprowadzić te obiekty. Pierwsza osoba wprowadzi swoje zasoby, ale u drugiej wyświetli się komunikat o błędzie.
Najlepszym sposobem jest zmiana nazwy drugiego obiektu, dzięki czemu nie zostanie on skasowany. Inne rozwiązanie to zmiana lokalizacji zasobu w hierarchii projektu, ponieważ do konfliktów nie dochodzi, gdy ścieżka do pliku jest inna.
Praca offline
Część pracy nad projektem UEFN można wykonywać dalej po przejściu w tryb offline, ale nie doradzamy takiego postępowania. Praca offline wiąże się z ryzykiem wystąpienia konfliktów z pracą wykonaną przez innych członków zespołu, ponieważ zasobów nie można wyprowadzić, gdy połączenie z Internetem nie działa. Może się wówczas okazać, że dwie osoby pracują jednocześnie nad tym samym materiałem.
Zalecenia w przypadku pracy offline:
- Najpierw uzgodnij z członkami zespołu, nad czym zamierzasz pracować. Jeśli to możliwe, pobierz zasoby, zanim utracisz połączenie.
- Ponownie połącz się z Internetem najszybciej, jak to możliwe, i wprowadź wdrożone zmiany.