Verzovací systémy (systémy pro správu verzí)
Co je verzování 1 / Úvod způsob uchovávání historie všech provedených změn u nějakého dokumentu - typicky zdrojové kódy, blueprinty,... >> správa více verzí téže informace Kdy použít verzovací systém pracuje-li na projektu více lidí (tj. téměř vždy) potřebujeme-li zálohovat starší verze (tj. také téměř vždy ) Kde se můžeme setkat s verzováním aplikace primárně určené pro správu verzí (CVS, Subversion, ) v rámci různých kancelářských balíků MS Office, OpenOffice.org wiki systémy
2 / Výhody verzování Práce v týmu možnost spolupráce více lidí (programátorů) na jednom projektu bez nutnosti přímého kontaktu systém umí (nebo by měl) upozornit na konflikty (upravuje-li více lidí stejnou část kódu) Evidence jednotlivých změn systém eviduje kdo a kdy provedl jaké změny >> možnost vrátit se zpět k některé z předcházejících verzí projektu, dostaneme-li se do slepé uličky apod. každé změně je přiřazeno unikátní označení (číslo, písmeno, kombinace obojího, ), které jí jednoznačně identifikuje většinou bývá označováno jako číslo revize v případě změny se (většinou) ukládá pouze tato změna, nikoliv celý dokument/soubor >> značná úspora místa proti situaci, kdy by si
programátor dělal kopie celých dat díky evidenci údajů u všech změn je možno např. přesně určit, kdo způsobil konkrétní chybu slučování verzí významná úspora času proti ručnímu porovnávání souborů propagace změn používání vývojových větví je možno např. oddělit funkční verzi pro zákazníka a pokračovat v dalším vývoji, je-li pak nutné v zákazníkově verzi provést rychle konkrétní úpravu, nemusíme se obávat zavlečení nových chyb z aktuálně rozpracované verze Archivace dat díky uchovávání každé změny slouží sytstém i jako archivátor všech dat Tvorba dokumentace verzovací systém (většinou) umožňuje přidat ke konkrétní změně i
autorův komentář jde tak o jakousi průběžnou dokumentaci, ze které je možné zpětně vyčíst co a proč bylo měněno apod. Dostupnost mnoho verzovacích systému je dostupných zdarma
3 / Nevýhody verzování Instalace a administrace správa systému představuje práci navíc rozsah záleží na velikosti projektu Nutnost přizpůsobit se danému stylu práce postupy jsou víceméně přesně dané nemusí vyhovovat každému Nutnost alespoň základního technického myšlení těžko očekávat, že úřednice na magistrátu budou jednotlivé vyhlášky spravovat pomocí verzovacího systému Primární využítí pouze pro textové soubory systémy pro správu verzí jsou navrženy zejmená pro práci s textovými daty binární soubory lze většinou také archivovat a verzovat, ale nelze již např. porovnávat jednotlivé změny
u některých typů souborů to lze obejít, ale představuje to práci navíc Centrální úložiště pracuje-li na projektu větší množství programátorů, je vhodnější rozdělit tým na menší subtýmy pracující s vlastními repository >> použití distribuovaných systému (Bazaar, Mercurial, ) Bezpečnost možnost vzdáleného přístupu k úložišti představuje potenciální riziko
4 / Kritéria dělení verzovacích systémů Licence proprietární open source BSD volné šíření licencovaného obsahu; vyžaduje pouze uvedení autora a informace o licenci, spolu s upozorněním na zřeknutí se odpovědnosti za dílo GNU GPL volné šíření; vyžaduje, aby byla odvozená díla dostupná pod toutéž licencí GNU LGPL (GNU Lesser GPL) kompromis mezi GNU GPL a BSD
Typ (model) úložiště centrální architektura klient-server jedno centrální úložiště pro celý projekt/tým distribuovaný systém přístup peer-to-peer každý peer má svou vlastní repository výměna dat mezi jednotlivými peery probíhá prostřednictvím takzvaných change setů operace jako commit, vracení změn apod. jsou rychlejší není třeba komunikovat se serverem
Model souběhu (Concurrency model) dělí systémy podle toho, jak přistupují ka zajišťování konzistence dat lock model uživatel nemůže měnit data, dokud nedostane exkluzivní lock merge model více uživatelů může měnit tatáž data systém změny sám sloučí upravuje-li více uživatelů stejnou část kódu (>> konflikt), je třeba rozhodnout, kterou změnu považovat za platnou většina systému používá merge model Některá další kritéria platforma programovací jazyk síťový protokol...
5 / Přehled některých verzovacích systémů Produkt Licence Typ úložiště Souběh Platforma Bazaar GNU GPL distribuované merge Unix, Win, Mac OS X ClearCase prop. centrální merge / lock Unix, Win, HP-UX, i5/os, OS/390, z/os Codeville BSD distribuované merge Unix, Win, Mac OS X CVS GNU GPL centrální merge Unix, Win, Mac OS X Mercurial GNU GLP distribuované merge Unix, Win, Mac OS X StarTeam prop. centrální merge Win Subversion (SVN) BSD centrální merge / lock Unix, Win, Mac OS X