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

Hogyan csináljunk videót képekből Windowson Adott egy könyvtár, amiben van több száz alkönyvtár, amelyek mindegyikében van több ezer jpg kép. Ezekből kellene videót gyártani... automatizáltan......
Excel F2-gate on OSX Tegye fel a kezét, aki még nem robbant fel attól, hogy a Microsoft Excel for Mac-ben nem működik az F2-vel való cell-tartalom szerkesztés! Mert ugye O...
Ú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...
Git repository költöztetés Néha előfordul olyan eset, hogy egy komplett repot át kell költöztetni egy másik Git szerverre. Ilyenkor jön a fejvakarás, hogy nehogy elszúrjunk vala...