W mojej pracy jako programista często zdarza się, że muszę porównywać wiele plików ze sobą aby znaleźć różnice, które wprowadzili moi koledzy. Część narzędzi, które posiadam w toolkicie posiada oczywiście wbudowany mechanizm obsługi repozytoriów, jednak z reguły nie jest on na tyle sprawny, by dawać mi odpowiednie narzędzie śledzenia zmian.

Przedstawię Wam dzisiaj dwa programy dla Linuxa, które doskonale sprawdzają się w tej roli. Pierwszy z nich to Meld (GPL), a kolejny to Perforce P4Merge.

Meld

Meld jest programem open source, napisanym w Pythonie. Instalacja programu odbywa się poprzez drzewo portów (portage).

# emerge meld

Sam program jest dość prosty w obsłudze – wczytujemy dwa lub trzy pliki i klikamy „porównaj”.

gentoo meld jak porównać pliki perforce

Porównanie dwóch plików wygląda więc następująco:

gentoo meld jak porównać pliki perforce

Po prawej mamy starszy plik, z komentarzem, po lewej nowszy, uzupełniony dodatkowymi zmiennymi klasy i z rozbudowanym konstruktorem. Jak widzicie, program rozpoznaje puste wiersze, jednak można wymusić, aby puste wiersze pomijał. Na niebiesko zaznaczony jest konflikt – różny kod w tych samych liniach, który należy zmergować. Idealna sytuacja wygląda więc następująco:

gentoo meld jak porównać pliki perforce

Po dokonaniu stosownych zmian oczywiście zapisujemy plik i dokonujemy próbnej kompilacji.

Pomimo, iż Meld jako darmowe narzędzie spisuje się dość dobrze w porównywaniu kodu, często brakuje mu „inteligencji wrodzonej”. Program potrafi – jak w naszym przypadku oznaczyć konflikt deklaracji dwóch zmiennych i komentarza, co jest prostym rozwiązaniem – CTRL+C, CTRL+V. Do bardziej zaawansowanych rozwiązań zalecam więc inną aplikację…

Perforce P4Merge

P4Merge jest aplikacją firmy Perforce Software, dostępną w prawdzie za darmo na stronie Perforce, jednak o zamkniętym kodzie źródłowym.

gentoo meld jak porównać pliki perforce

P4Merge z konfliktami radzi sobie podobnie do Meld, jednak posiada odrobinę większą „inteligencję” w rozpoznawaniu różnic w kodzie.

Program doskonale spisuje się w przypadku rozwiązywania konfliktów w repozytorium Git – możemy go ustawić jako mergetool i używać w przypadkach, w których natrafimy na konflikty.

Podsumowanie

Jak porównać dwa pliki w Gentoo? Z jednej strony mamy oprogramowanie, które należy do grupy aplikacji o otwartym kodzie źródłowym, na przeciw niego stawiając komercyjnego, zamkniętego P4Merge. Należy tutaj podkreślić, że sam Meld jako przedstawiciel Open Source nie posiada aż tak wielu różnic ze wspomnianym P4Merge i spisuje się podobnie dobrze.

Polecam więc wykorzystanie obu narzędzi – abyście standardowo wybrali ulubione rozwiązanie, gdyż to co dla mnie jest wadą jednego czy drugiego programu, dla Was może być zaletą i odwrotnie. Każdy ma swój styl i dlatego wybór lepszego zostawiam Wam.

Pozdrawiam,

M.M.