Subversion out-of-the-box obsahuje diffovací a mergovací utilitu, která však slouží pro velmi základní účely, moc toho neumí a UI je velmi nepřítulné.
Klient TortoisSVN přichází s grafickou mergovací utilitou, která už může být pro některé uživatele postačující, nezvládá však kódování ani porovnávání adresářů.
Jal jsem se tedy hledat na netu nějaké rozumnější nástroje. Z FAQ TortoiseSVN jsem věděl o „excelent Open Source“ programu WinMerge (2.2) a skutečně, tento nástroj má prakticky vše důležité:
- umí Unicode (přesněji UTF-8, což mi však stačí)
- umí porovnávat adresáře
- umí mergovat
- v rámci porovnávaných souborů umí zvýrazňovat syntaxi
- obsahuje command-line interface pro snadné volání třeba právě ze SVN
- neustále se vyvíjí a je Open Source
Druhou muškou je porovnávání adresářů. To sice pracuje tak, jak má, ale výsledkem je nepřehledná 2D tabulka namísto stromové struktury jako v jiných programech. Ve výsledcích se tedy lze jen těžko vyznat.
Hledal jsem proto dál. Už ani nevím jak, ale narazil jsem na Araxis Merge (6.5). Podle webové prezentace a ceny (180$!!) jsem myslel, že jsem našel. Program mě uchvátil tímto:
- Velmi příjemné a jednoduché uživatelské rozhraní
- Prakticky dokonalá podpora kódování (na úrovni jEditu)
- Velmi přehledné výsledky porovnávání adresářů
- Na pravém tlačítku je pod jednou položkou schováno standardní
systémové menu
- Podpora command-line
Během krátkého užívání se ale začaly projevovat další slabiny. Předně mi začalo UI připadat až moc jednoduché – na časté operace nebyly tlačítka v nástrojové liště, ale třeba jen v kontextovém menu apod. Také možnosti porovnávání byly velmi omezené – většinou by asi stačili, ale v porovnání s vítězem „testu“ (viz dále) působil program poněkud chudě. Také porovnávání adresářů, které mě zprvu nadchlo, se neukázalo být nejlepší. A.M. vždy porovnával obsahy souborů, takže operace trvala dlouho a nešlo ji nijak ovlivnit. Navíc nebylo nijak signalizováno, jestli ve složce X je nějaký změněný soubor či nikoliv (bylo nutno ji manuálně prozkoumat). Sečteno podtrženo, hledal jsem dál.
Vysoko hodnocený a rovněž velmi populární je Beyond Compare (2.2.7). Na webu se chlubil podporou Unicode, porovnáváním adresářů a dalšími podobnými věcmi jako Araxis Merge, tak jsem ho zkusil. Následoval přesně opačný proces než u A.M.: zpočátku jsem měl výhrady, ale už po pár minutách jsem byl nadšen. Hlavní výhody:
- Úžasné možnosti porovnávání (dá se nastavit, jak moc „přísný“ má BC být)
- Přehledné GUI, které však na rozdíl od A.M. obsahuje vše, co by člověk čekal
- (Pro mě kupodivu) dokáže automaticky zobrazit i UTF-8 bez BOM
- Prakticky dokonalé porovnávání adresářů (konfigurovatelné, přehledná indikace stavů)
Options > Rules > New, na záložce General:
Name = ‚Výběr kódování‘ (nebo libovolný název)
Associated with = ‚*.nothing‘ (nějaká přípona, která neexistuje)
Character set = <prompt>
Po otevření porovnání vybrat Tools > Pick rules > Výběr kódování, načež se Beyond Compare optá, jaké má použít kódování pro levé a pravé okno. (Podstata finty: pro jinou příponu je možné definovat jiná pravidla porovnání, třeba i to, v jakém kódování má být soubor otevřen; pravidlo porovnání potom stačí ručně změnit a speciální hodnota kódování <prompt> zajistí, že se BC na kódování optá).
Nenašel jsem tedy nic, co by mi na BC chybělo. Zatím se pouze zdá, že nemá moc propracované řádkové rozhraní, což ani není divu při komplikovaných možnostech nastavení porovnání.
Dál už jsem nehledal, v zásobě mi tak zůstaly následující programy:
- Guiffy (6.5) – v recenzích poměrně ceněný softík, ihned po spuštění mě však znechutilo swingovské VELMI nepěkné rozhraní
- Altova DiffDog (2005 SP1) – komplexně vyhlížející nástroj od Altovy, viděl jsem pouze screenshoty a UI vypadá dost komplikovaně (až moc na poněkud jednostranné zaměření diff/merge utilit)
Musím jen souhlasit, BC rulez! Taky mě unavovalo věčné porovnávání změn v projektech. Total Commander sice nabízí možnost synchronizace složek, ale velice zjednodušenou, a pro normální práci jsem potřeboval něco propracovanějšího. Láska na první pohled to sice nebyla, ale po prvních minutách práce jsem přestal hledat nějaký jiný program pro synchronizaci. Ještě jedno plus bych u BC uvedl a to je jeho cena $30.