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ę.

0 0 votes
Article Rating
4 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback
11 years ago

Git mergetool | Maciej Aniserowicz o programowaniu…

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

apl
apl
11 years ago

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
11 years ago

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

Kurs Gita

Zaawansowany frontend

Szkolenie z Testów

Szkolenie z baz danych

Książka

Zobacz również