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_listSzá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!