3-way merge tool Git-hez – P4Merge

By | 2013. január 14.

Aki már dolgozott verziókövető rendszerekkel, tudja, hogy amikor kódot írunk, ráadásul nem egyedül, hanem csapatban fejlesztünk, óhatatlan, hogy egy másik fejlesztő belenyúl egy olyan file-ba, amit mi írtunk és fordítva, netán párhuzamosan dolgozunk rajta. Ebből adódóan az illetőnél is és nálam is két különböző verzió létezik. És ekkor még csak két emberről beszéltünk. Amikor ezeket a különböző verziókat kell egybe varázsolni, na ezt hívják merge-ölésnek. Abban az esetben, ha ritkán töltjük le a lokális gépünkre az éppen aktuális állapotot a project-ből, akkor sokkal nagyobb az esély sok conflict-ot kell megoldanunk (amikor különböző verziókból kell kitalálni, hogy mi kell a közös, végleges verzióba). Ezért ajánlatos sűrűn „git pull„-ozni. Az alap merge eszköz nem egy nagy durranás a Git-ben. Persze használható, de csak két utas és nem annyira felhasználóbarát.

2-way vs. 3-way

De mi a különbség a két-, illetve a három utas összefésülő eszköz között? Nagyon egyszerű a válasz. A két utasnál csak azt látjuk, hogy mi van abban a verzióban, ami nálunk a lokális gépünkön (Local) található és mi van a szerveren található (Remote) változatban. A 3-way verziónál kapunk egy kis extrát. A program azt is megmutatja az előbbi kettőn kívül, hogy mi volt az eredeti verzió (Base, Original), ami a Local és a Remote előtt volt. Ez által kapunk egy remek támpontot, hogy mire is lesz szükségünk a két másik változatból.

Letöltés

Az általam eddig legjobban használható és talán legkönnyebben integrálható, valamint nem utolsó sorban platformfüggetlen merge tool, a Perforce által kínált ingyenes P4Merge. Figyelem! Csak a merge tool ingyenes! Minden egyéb más szoftver a csomagban fizetős, de nekünk arra szerencsére nem lesz szükségünk.

Töltsük le a program megfelelő változatát a következő oldalról:

http://www.perforce.com/downloads/complete_list

Számomra egy 32 bites Windows-os verzióra lesz szükség és egy Mac-es 64 bites változatra a P4Merge: Visual Merge Tool -ból.

Telepítés

Miután letöltöttük, telepítsük és állítsuk is be.

Windows

Alapvetően teljesen egyszerű, next-next-finish ez is. Csak egy lépés van, ahol be kell állítani, hogy mely komponenseket szeretnénk telepíteni.

Amikor kész a telepítés, indítsuk el a Git Bash-t és adjuk ki a következő parancsokat (Az útvonal változhat, attól függően, hogy hova telepítettük):

git config --global mergetool.p4merge.path 'C:\Program Files\Perforce\p4merge.exe'
git config --global merge.tool p4merge
git config --global difftool.p4merge.path 'C:\Program Files\Perforce\p4merge.exe'
git config --global diff.tool p4merge

Kész is.

OSX

Megnyitjuk a dmg file-t, majd a megjelenő ablakból a p4merge.app -ot telepítjük (belehúzzuk az Applications mappába).

Hozzunk létre a felhasználói fiókunkba egy .gitconfig nevű file-t, ha még nem létezne, de nagy valószínűséggel már ott van, hiszen a korábbi Git config parancsokat ebben tárolja. Másoljuk bele ezt:

[merge]
keepBackup = false
tool = p4merge

[mergetool "p4merge"]
cmd = /Applications/p4merge.app/Contents/Resources/launchp4merge "\"$PWD/$BASE\"" "\"$PWD/$REMOTE\"" "\"$PWD/$LOCAL\"" "\"$PWD/$MERGED\""
keepTemporaries = false
trustExitCode = false
keepBackup = false

Készen is vagyunk!

Használat

A Git Bash-ben vagy OSX-en a terminálban merge konflict esetén kiadjuk a következő parancsot:

git mergetool

És már indul is!

Hasonló cikkek

NodeJs NPM – A nyakkendős modulraktáros A előző NodeJs postban a modulokat taglaltam. Most nézzük meg, hogy mi van, ha nem mi írunk magunknak, hanem már előre elkészített modul-csomagokat sz...
Git szerver telepítés Synology NAS-on Az otthoni munkáim során is szükség van verziókövető rendszerre a fejlesztéseknél. A legkézenfekvőbb megoldás, hogy a már amúgy is használatban lévő N...
Újabb Git parancssori okosságok (add/rm/reset/log)... Próbáltam összeszedni pár olyan dolgot, ami a mindennapi Git használat során előjön amikor a módosításokat kezelem, és jó lenne, ha egy összeszedett f...
Windows 10 és a hálózati megosztások esete Ismét egy agybaj... Adott egy Windows 10-es PC, amin szerettem volna pár megosztott mappát felmountolni a NAS-ról. Nem egy rakétatudomány. Mondhatni r...