Porovnávání různých verzí téhož souboru je specifická činnost, kterou lze nalézt především v oblasti návrhu a hlavně vývoje softwaru. Tam je totiž více než nutné sledovat, co nového přibylo, ubylo či se změnilo ve zdrojovém kódu za předem dané období.
Jestliže používáte některé nástroje na verzování souborů (MS Visual
SourceSafe, PVCS VM, Rational ClearCase a další), pak je funkce porovnání
dvou verzí dodána standardně. Co ale dělat v případě, kdy chceme více,
než znát rozdíly dvou verzí, navíc vybraných z prostředí daného
nástroje?
Odpovědí je Araxis Merge (dále jen AM). Po jednoduché a přímočaré
instalaci je možné začíst s produktem pracovat. K dispozici jsou dvě
okna, ve kterých jsou umístěny soubory, v nichž potřebujete znát rozdíly
(viz obrázek). Změny jsou zobrazovány nejen v kontextu celých řádků, jak
to dělá například již zmíněný SourceSafe, ale bere ohled i na
jednotlivé znaky. Na levém i pravém okraji obou oken jsou graficky
zvýrazněné změny, takže nemusíte jednotlivé změny pracně hledat
sekvenčně, ale můžete se „narolovat“ přímo na změněné místo.
Představte si, že jste si
z Internetu stáhli zdrojové kódy nějaké knihovny, ve kterých jste dopsali
některé funkce případně opravili nalezené chyby. Nyní zjistíte, že tato
komponenta je v nové verzi s vlastnostmi, které chcete používat. Stáhnete
si tedy zdrojové kódy a potřebujete zajistit, aby zůstaly vámi provedené
změny, ale aby současně mohly být využívány nové věci. Stačí si tedy
obě verze zobrazit v AM a pomocí tlačítek, které jsou u změn zobrazeny
(opět viz tentýž obrázek), provést v původním kódu pouze ty změny,
které sami uznáte za vhodné (a samozřejmě lze vaše změny promítnout do
stažené verze). Pokud se stane, že některou změnu jste provedli, ač
záměr byl opačný, není problém se vrátit zpět. Veškeré zásahy, které
provedete, jsou uloženy na disk až když si sami určíte.
Druhá možnost práce je taková, že si nejprve všechny změny
prohlédnete a pokud s nimi souhlasíte, pomocí jediného tlačítka
sesynchronizujete celý soubor.
Kromě synchronizace změn lze přímo v AM soubory editovat samozřejmě
s tím, že rozdíl je ihned vizuálně zobrazen i v druhém okně. V oknech
je možné definovat si záložky, na které se můžete odkudkoliv vrátit.
Rychlé přecházení taktéž funguje mezi řádky, na kterých byla provedena
změna. Kromě vyhledávání lze z editačních vlastností produktu jmenovat
například odsazování bloků (indent), rychlý přechod na zvolený řádek
a další.
Bohužel Windows není jediné prostředí, ve kterém lze vytvářet
soubory, proto produkt umožňuje (ne)dělat rozdíly mezi různým zakončením
řádků (Linux versus Windows). Stejně tak můžete zvolit další parametry,
které určí, zda bude text označen za změněný či nikoliv: malá/velká
písmena, mezery na začátku řádky, výrazy apod.
Různé knihovny nebývají dodávány v jediném souboru, ale typicky se
jedná o několik (desítek) souborů různě rozdělených do podadresářů.
I s tímto si AM dokáže poradit. Podobně jako při zobrazení rozdílu
v souborech lze sledovat rozdíly v adresářích. Kromě označení toho, zda
soubor někde přebývá nebo chybí, se u souborů, které jsou v prvním
i druhém adresáři, zobrazí počet případných změn. Při poklepání
myší se zobrazí již známé porovnání souborů.
Protože program z parametrů dobře pozná, zda má porovnávat dva soubory
či adresáře, lze toho příjemně využít například ve Windows Commanderu.
V každém okně stačí nastavit kursor na požadovaný soubor či adresář a
spustit AM z tlačítkové lišty.
Protože je AM určen hlavně vývojářům, je možné jej používat
i z příkazové řádky, což je vcelku běžná záležitost, ale hlavně
lze k němu přistupovat z různých vývojových prostředí, které
umožňuje OLE Automation (Delphi, Visual C++, Visual Basic, ale i Windows
Script Host a další). Porovnávání lze tak zavést do vlastních aplikací.
V nápovědě naleznete referenční nápovědu všech objektů, které lze
použít. Když jsem si s tímto hrál, narazil jsem na drobný problém:
ačkoliv nastavíte hlavnímu objektu vlastnost Visible na False, přesto při
vytváření problikne (testováno s Delphi a WSH).
Když už byla zmínka o nápovědě, je nutné podotknout, že nejen
reference k objektům, ale vůbec celá nápověda je na velmi slušné úrovni
včetně grafického zpracování. Kromě jiného lze nalézt informace
k integraci s nástroji určené pro konfigurační řízení.
Kromě dvoucestného porovnávání lze využít porovnávání
třícestného, tedy sledovat změny ve třech verzích. Toto platí jak
o souborech, tak nyní nově i o adresářích.
Závěr
Pokud patříte do skupiny vývojářů, kteří se již dostali nejen do
fáze verzování, ale i využívání různých verzí zdrojových textů
třetích stran, je tento nástroj právě pro vás. Kromě toho si můžete
napsat díky otevřenosti vlastní rozšíření. Je vidět, že tvůrci
vycházeli z reálných potřeb uživatelů a vytvořili nástroj, který lze
zařadit mezi špičku podobných nástrojů.
Plusy, mínusy, závěr
Plusy
- Kvalitní zpracování GUI
- Možnost třícestného porovnávání
- Integrace do VM či SCM nástrojů
- Možnost vlastní aplikace pomocí OLE Automation
- Nápověda
Mínusy
- Probliknutí při vytváření objektu OLE Automation
Závěr
- Velmi kvalitní nástroj pro porovnávání a „slévání“ verzi
s mnoha možnostmi.
Kontakt
Tento článek byl napsán pro časopis Softwarové noviny 10/2001.
Upozornění: tento text neprošel redakční úpravou, takže je
tak, jak byl napsán včetně případných chyb. Žádná část tohoto
článku nesmí být použita bez předchozího souhlasu autora.
Seznam mých dalších článků je v tomto přehledu.