Problem
Jeśli kiedykolwiek pracowałeś z TestStandem i gitem znany Ci jest prawdopodobnie podobny widok:
Format sekwencji TestStanda jest niezrozumiały dla domyślnych narzędzi diffowych. Niemożliwe jest więc podejrzenie z poziomu GUI typu SourceTree zmian w plikach sekwencji, nie mówiąc już o ich łatwym mergowaniu.
Jest to szczególnie problematyczne wtedy, gdy więcej niż jedna osoba pracuje na sekwencji testowej i potrzeba te zmiany potem scalić lub odrzucić.
Natywny Diff tool do TestStanda
Z pomocą przychodzi natywny program od National Instruments, który można znaleźć tutaj:
Może on pracować w dwóch trybach:
Diff – czyli porównanie dwóch wersji plików
lub merge, czyli scalenie zmian. Potrzebujemy tutaj wskazać aż cztery pliki: Base, File1, File2, Merged
Chcąc zmergować pliki musimy wiec wskazać manualnie poza dwoma plikami dodatkowo:
Base – czyli ostatni wspólny przodek, inaczej mówiąc ostatnia wspólna wersja, od której zaczynały się robić równoległe zmiany
Merged – czyli plik będący wynikiem scalenia – tu podajemy tylko nazwę, plik zostanie utworzony przez program.
Jeśli nie mamy odpowiednio skonfigurowanego repozytorium, korzystanie z powyższego narzędzia będzie wiązało się z ręcznym checkout-em poszczególnych commitów, a następnie kopiowanie plików do osobnej lokalizacji i manualnego wskazywania ścieżek w powyższym oknie. Potem manualne kopiowanie plików merged do odpowiednich ścieżek… okropność. A jak jeszcze mamy do scalenia kilka plików, robi się z tego dramat.
Co robić, jak żyć?
Skonfiguruj sobie odpowiednio swojego klienta do repozytorium.
SourceTree
Konfiguracja
Przejdź do ustawień: Tools -> Options
W zakładce Diff przechodzimy do sekcji External Diff / Merge:
W Diff command oraz w Merge Command wpisujemy po prostu ścieżkę do FileDifferLauncher.exe z naszego dysku.
Zwróć uwagę na to, by w poleceniu nie znalazł się “cudzysłów”, choćby jeżeli w ścieżce występuje spacja.
W Arguments do Diff wpisujemy:
\"$LOCAL\" \"$REMOTE\"W Arguments do Merge wpisujemy:
\"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"na koniec trzeba skasować folder z krzakami w nazwie, w AppData -> Local i uruchomić ponownie program.
(dzięki wielkie, SourceTree)
Korzystanie
Diff
Aby podejrzeć zmiany, nad polem podglądu klikamy w External Diff:
po (dłuższej) chwili otwiera się nasz Diff Tool
Merge
Jeśli chodzi o merge – w oknie commitu, klikamy na plik, z widocznym konfliktem i wybieramy
znów, po dłuższej chwili w tle otworzy się nasze narzędzie, a w SourceTree pokaże się takie okno:
Gdy w naszym Diff Toolu zapiszemy zmergowaną wersję i zamkniemy program, komunikat w SourceTree zniknie, a zmergowany plik będzie gotowy do commitu.
Tortoise
Co jeżeli używasz klasycznego żółwia?
Konfiguracja
Zaczynamy od wejścia w żółwiowe ustawienia, klikamy na Advanced:
Dodajemy następującą linijkę dla rozszerzenia .seq:
podobnie dla mergowania, przycisk Advanced i linijka:
Korzystanie
Diff
Możemy podejrzeć sobie na przykład ostatnie zmiany w pliku. Po prawo-kliku na konkretnym pliku wybieramy opcję:
Merge
Tu też jest sytuacja prosta – przy merge’u pojawia się konflikt. W oknie Resolve klikamy dwukrotnie na nazwę pliku – otworzy to nasze narzędzie do merge’u. Następnie save i zamknięcie programu.
A Ty jakie miałeś przygody związane z mergowaniem projektowego repozytorium?
Daj znać w komentarzu!