Nástroje pro správu verzí nejsou ještě mezi uživateli výpočetní techniky tolik známé - dokonce ani mezi vývojáři. O co vlastně jde? Version Control System (VCS) je nástroj umožňující správu verzí projektů, na kterých buďto sami nebo v týmu pracujete. Produkt firmy Microsoft, který si představíme, patří mezi ty, které jsou primárně založené na sériovém modelu (viz rámeček Sériový a paralelní model), ale umožňuje pracovat i paralelně.
Instalace
Visual SourceSafe (dále jen VSS) lze používat buďto pouze na jednom
počítači nebo síťově, kde na file serveru (v podstatě to může být
libovolný počítač, kam může uživatel zapojený do sítě zapisovat) jsou
typicky umístěny databáze. V případě instalace na server se zde ještě
umístí instalační soubory pro klientské počítače. Odtud si pak každý
uživatel instaluje klientskou část VSS na svůj počítač. Po instalaci na
file server je automaticky založena jedna databáze, takže zbývá pouze
přidat uživatele a začít pracovat. V praxi je však běžné a žádoucí,
že se databází vytvoří více v závislosti na povaze projektů a
pracovních týmů.
Pracujeme s projekty
Po instalaci již můžeme přistoupit k vlastnímu využívání aplikace.
Základem všeho je založit si projekty. Ty se zobrazují v levé části okna
(viz obrázek 1). Ve skutečnosti to jsou adresáře, které se vytvoří,
stáhnete-li si projekt k sobě na disk. Pokud tedy máte umístěn projekt ve
více adresářích, VSS to bude prezentovat jako několik projektů. Kromě
jiného je potřeba zadat pracovní adresář na vašem lokálním disku, kam se
budou soubory stahovat – lze nastavit pro každý projekt-adresář. Nyní
již zbývá mít nějaké soubory, které jsou součástí projektu. Ty lze do
VSS vložit a od té chvíle k nim mohou ostatní uživatelé. Na stejném
obrázku lze vidět soubory, které jsou zamknuté pro ostatní uživatele, kdo
je zamknul a datum, kdy byl soubor naposledy do databáze zařazen. Soubory,
které nemá nikdo zamknuté, si můžete sami zamknout pro svoji potřebu a
začít editovat.
Pokud například patříte mezi testovací pracovníky, je potřeba, abyste
měli na disku vždy aktuální soubory. Ani tohle není problémem. VSS vám na
disk stáhne všechny soubory nejposlednější verze, které potřebujete a je
úplne jedno, zda jsou zamčené či nikoliv. Bývá dobrým zvykem dávat do
VSS pouze takové verze souborů či dokumentů, které jsou pro daný úcel
použitelné.
Velmi dobrou vlastností, na kterou jsem ze začátku nadával, je
nastavování atributu Read-only souborům, které nemáte zamknuté. Pokud si
soubor totiž zapomenete zamknout, může vám jej někdo jiný zabrat pro sebe,
což ještě není to nejhorší, ale pokud se budete snažit dostat jej do
databáze (check in), musíte to složitě obcházet. Díky nastavenému
atributu se vám soubor nepodaří editovat a vy víte, že jste si jej musíte
nejprve zamknout (check out).
Práce na projektu není krátkodobá, naopak, můžete na něm pracovat
týdny či měsíce až roky. Takový informační systémy pro velké podniky
mohou být navíc ještě neustále obnovované dle potřeb podniku.
Provádíte-li každý týden upgrade svých programů a občas se může stát,
že se něco nepovede. Pak za vámi přijde uživatel programu a pokud nebude ve
vašich silách problém odstranit během pár minut, budete potřebovat dát mu
alespoň minulou verzi. Nebo tu, co měl před dvěma měsíci. Žádný
problém pro VSS. Necháte si vylistovat historii souboru (viz obrázek 2) nebo
celého projektu a vybrat si soubor(y), který(é) potřebujete. Horší je to
se stažením celého projektu – zde VSS trošku pokulhává. Pokud jste si
ho předtím neoznačili „nálepkou“ (Label), musíte stahovat každý
soubor zvlášť. Jinak jej lze stáhnout vždy k dané nálepce. Bohužel
v praxi bývá potřeba stahovat k určitému datu častější.
VSS disponuje užitečným nástrojem pro porovnávání různých verzí
souborů. Na obrázku 3 lze vidět vizuální rozlišení mezi změnou,
smazáním či přidáním textu na řádce. Je snad jasné, že pro jiné než
textové soubory tato činnost nemá smysl.
Asi poslední akce, kterou běžně uživatel provádí, je vyhledávání
informací v databázi. Pokud pracujete na více souborech ve více projektech,
můžete ztratit přehled, co vše máte zamknuté, nebo naopak není
v lidských silách si pamatovat umístění velkého počtu souborů
v ještě větším počtu projektů. Hledání lze omezit na jeden projekt, na
projekt včetně podprojektů nebo na všechny projekty. Výsledek je zobrazen
v pravé části hlavního okna a vy nyní máte možnost vložit do databáze
všechny vaše zamknuté soubory a uvolnit je pro ostatní uživatele nebo si je
uzamknout a pracovat na nich.
Další vlastnosti
Není neobvyklé, že jeden soubor je součástí více projektů. I na
tohle VSS myslí a umožňuje sdílení souboru (sharing) v rámci více
projektů. Pokud v souboru na jednom místě provedete změny, budou ihned po
vložení nové verze do databáze vidět ve všech ostatních projektech. Pro
paralelní vývoj umožňuje VSS operace rozdělení projektu do více větví a
následné spojení dohromady. Vyvíjíte-li webové stránky, máte
zajištěno, že budou automaticky kontrolovány odkazy, můžete si nechat
vygenerovat mapu serveru a publikovat obsah přímo na webový server.
Administrátorské nástroje
Základním nástrojem, o kterém jsem se zmínil již v úvodu, je VSS
Administrator, díky kterému máte databázi jako na dlani. V základním
okně je zobrazen seznam uživatelů, jejich práva k databázi a stav, zda
jsou k databázi přihlášeni či nikoliv. Práva jsou jen dvě: čtecí a
zapisovací a platí pro celou databázi, což může být omezující
v případech, kdy máte v databázi více projektů a ke každému musí mít
uživatel jiná práva. Tento stav lze obejít vytvořením většího počtu
databází. Velmi důležitou částí je archivace a v případě poškození
obnova dat v databázi – k této operaci existují i řádkově
orientované ekvivalenty. Samozřejmostí je sledování činnosti uživatele a
jeho zápis do protokolovacího souboru. Užitečný je diagnostický program,
který zjistí případné nedostatky a pokud je to v jeho silách, dokáže
nesrovnalosti opravit.
Integrace VSS do vývojových nástrojů
Ačkoliv není VSS vázán na žádný vývojový nástroj a umožňuje
správu verzí zcela libovolných typů souborů, dá se integrovat do
ostatních produktů firmy Microsoft. Jsou to například Visual C++, Visual
J++, Visual InterDev, Visual FoxPro, FrontPage nebo Access. Jak jsou ale na tom
vývojáři pracující v Delphi nebo C++ Builderu firmy Borland? Na ty
bohužel Microsoft nepamatoval, ale potěšující je fakt, že takové
nástroje existují od jiných firem a jsou k dostání na Internetu.
Jak se s VSS pracuje?
VSS je nástroj, se kterým mám již nějaké zkušenosti z praxe. Je zde
několik věcí, které mi chybí nebo které nepovažuji za příliš štastne
provedené. Základní problém je stahování projektu, které nelze k danému
datu, ale pouze k „nálepce“. VSS nedokáže vyhledávat v projektu, který
byl aktuální v určitém datu. Problémy jsou také s pracovními
adresáři. Ke každému projektu lze nastavit pracovní adresář na úplne
rozdílná místa. Pokud však chcete například stáhnout poslední verzi
nadřazeného projektu, stáhnou se soubory do podadresářů pracovního
adresáře nadřazeného projektu.
Ačkoliv se zdá, že si na produkt stěžuji, není to úplne pravda. Pokud
se dokážete vyrovnat s některými (chybějícími) vlastnostmi, bude vám
produkt velmi dobře sloužit. Po celou dobu, co jej používám se nestalo, že
by havaroval nebo se dostal do situace, ze které by nevěděl jak dál. VSS
jsem provozoval jak na Windows 95, tak na Windows NT 4.0 i na Windows 2000 RC
2. Pro stejnou platformu existuje ve stejné cenové kategorii ještě jeden
produkt (Borland Team Source, viz recenze Delphi 5 v Softwarových novinách
12/99), který ovšem není dle mého názoru produkt, se kterým by se dalo
rozumně pracovat.
Obrázky
Do rámečku mimo text: Sériový a paralelní model
Pokud má nějaký tým lidí pracovat na projektu, je potřeba zajistit
konzistenci dat, konkrétně jednotlivých souborů a dokumentů. Chce-li více
pracovníků upravovat jeden a týž soubor, nastává problém. První
řešení v podobě sériového modelu znamená zamknout si soubor pro sebe a
ostatní musí čekat na uvolnění. Druhé řešení spočívá v poskytnutí
kopie souboru všem, kteří jej chtějí upravit a následný pokus
o sjednocení změn do nové – aktuální – verze. To s sebou může
přinést problémy. Oproti sériovému modelu, jehož jedinou nevýhodou je
právě neumožnění pracovat více lidem na jednom souboru, je sjednocování
v paralelním modelu často ruční práce, která vyžaduje přítomnost
všech, kteří na souboru pracovali. Jako příklad mohu uvést následující
modelovou situaci: ve zdrojovém souboru existuje konstanta, která má hodnotu
3. Jeden pracovník se rozhodne změnit ji na 2 a třetí na 4. Co je nyní
správně? To již musí rozhodnout ruční úprava při sjednocování. Na
druhou stranu je pravda, že by se tohle v dobře řízených týmech stávat
nemělo a paralelní model by neměl být překážkou. Osobně však preferuji
sériový model, kde má každý jasno, kdo na čem pracuje.
Slovníček pojmů
- VCS (Version Control System) – nástroj, který
zajišťuje nějakým způsobem správu verzí dokumentů
- Databáze – v tomto případě se jedná o uložené
jednotlivé soubory, které náleží projektu
- Projekt – jedná se o označení skupiny souborů,
které jsou v jednom adresáři
- Check In – operace, která vloží upravený soubor
zpět, v případě sériového modelu odstraní zámek a umožní ostatním,
aby jej mohli upravovat
- Check Out – operace, která „vyzvedne“ soubor
z databáze a v případě sériového modelu jej zamkne
Plusy
- Intuitivní prostředí
- Stabilita
- Možnost integrace do vývojových nástrojů
Mínusy
- Nelze hledat v určité verzi projektu
- Málo možností stahování projektu
- Nelze stahovat projekt k datu
- Nedostatečná možnost nastavování práv
Závěr
Rozumný nástroj pro správu projektů, pokud nemáte příliš vysoké
nároky.
Tento článek byl napsán pro časopis Softwarové noviny 4/2000.
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.