fbpx
devstyle.pl - Blog dla każdego programisty
devstyle.pl - Blog dla każdego programisty
2 minut

Git mergetool


12.09.2013

Niedawno napotkałem w Gicie dziwny problem… tak naprawdę jeden z dwóch poważnych, które utrzymywały się przez długi czas (drugi to line-endings które do dziś potrafią mnie w zad uszczypnąć). Mianowicie mój kochany, uwielbiany Git pokazywał mi podczas merge konflikty w każdym jednym pliku, niezależnie od tego czy coś było w nim faktycznie zmieniane czy też nie. Po otwarciu mergetool okazywało się, że nawet jeśli jakieś zmiany nastąpiły to powinny być teoretycznie automatycznie połączone bez najmniejszego problemu.

Rebase dwóch gałęzi “rozjechanych” o miesiąc trwałby w ten sposób dobre parę dni, więc zakasałem rękawy i postanowiłem okoliczności te rozwiązać systemowo – czyli dojść do źródła tej sytuacji i je wyeliminować.

Okazało się – co mnie trochę zdziwiło – że sytuacja ta była efektem niepoprawnej konfiguracji “mergetool” w konfiguracji Gita. Do dziś moim ulubionym narzędziem do diff/merge jest to małe fajne ustrojstwo z pakietu Tortoise i miałem je zdefiniowane tak:

[merge]tool = tortoise

[mergetool “tortoise”]cmd = “TortoiseGitMerge.exe” -base:”$LOCAL” -mine:”$REMOTE”

Spróbowałem też czegoś takiego, ale bez specjalnie zadowalających efektów:

[merge]tool = tortoise

[mergetool “tortoise”]cmd = “TortoiseGitMerge.exe” -base:”$BASE” -theirs:”$REMOTE” -mine:”$LOCAL” -merged:”$MERGED”

Szczególnie ta druga opcja powinna niby działać prawidłowo, ale… Finalnie doszedłem do tego, że najlepiej jest w ogóle przy przekazywanych parametrach nie mieszać, bo Git sam wie co dla niego dobre (mogłem się tego w sumie domyślić wcześniej). Aktualna konfiguracja TortoiseMerge jako mergetool dla Gita wygląda tak i jest okej:

[merge]tool = tortoisemerge

[mergetool “tortoisemerge”]path = tortoisegitmerge.exe

(oczywiście zakładam, że katalog z binarkami pakietu Tortoise jest dodany do PATH).

Nawet jak nikomu się ten tip nie przyda to czuję, że sam tutaj do niego za jakiś czas wrócę.

Notify of
trackback

Git mergetool | Maciej Aniserowicz o programowaniu…

Dziękujemy za dodanie artykułu – Trackback z dotnetomaniak.pl…

apl
apl

Ogólnie przed własnoręczną konfiguracją mergetool warto najpierw odwiedzić %PROGRAMFILES%\Git\libexec\git-core\mergetools. „Przyjedź do nas, Twój mergetool jest już tutaj od dawna”.

Krzysztof Morcinek

%PROGRAMFILES%\Git\libexec\git-core\mergetools – nice tip.

Kurs Gita

Zaawansowany frontend

Szkolenie z Testów

Szkolenie z baz danych

Facebook

Książka

Zobacz również