Systém na správu verzií

Správa verzií je umenie správy zmien k informáciám. Donedávna to bol kľúčový nástroj najmä pre programátorov, ktorí pridávajú do programov malé zmeny a potom ich na druhý deň potrebujú zrušiť. Užitočnosť takéhoto softvéru pre správu verzií však dnes už siaha ďaleko za hranice vývoja softvéru. Kdekoľvek sa môže nájsť skupina ľudí, ktorá používa počítač na správu informácií, ktoré sa často menia. Takíto, ľudia určite využijú systém na správu verzií.

Bazaar

Bazaar je nový systém na kontrolu verzií sponzorovaný spoločnosťou Canonical, čo je spoločnosť, ktorá vyvíja Ubuntu. Na rozdiel od systémov Subversion a CVS, ktoré podporujú iba centrálny model úložiska, Bazaar podporuje aj distribuované riadenie verzii, čo ľuďom umožňuje efektívnejšie spolupracovať. Bazaar bol vyvinutý na maximalizovanie úrovne spolupatričnosti komunity na otvorených projektoch.

Inštalácia

Do príkazového riadka zadáme nasledujúci príkaz:

sudo apt-get install bzr

Konfigurácia

Aby sme uviedli samého seba do bzr, použijeme príkaz whoami:

$ bzr whoami 'Jozef Mrkva <jozef.mrkva@gmail.com>'

Používanie systému Bazaar

Súčasťou systému Bazaar je i dokumentácia, ktorá sa nachádza v priečinku /usr/share/doc/bzr/html. Tento návod je vhodný pre začiatočníkov. Príkaz bzr má tiež vstavaného pomocníka:

$ bzr help

Ak sa chceme dozvedieť viac, napríklad o príkaze foo, zadáme:

$ bzr help foo

Prepojenie so systémom Launchpad

Aj keď je Bazaar veľmi užitočný ako samostatný systém, poskytuje aj možnosť prepojenia so systémom Launchpad, čo je systém určený na spoluprácu pri vývoji, ktorý používa spoločnosť Canonical a rozsiahla komunita na správu a rozširovanie samotného Ubuntu. Informácie o tom, ako sa dá Bazaar použiť so systémom Launchpad na spoluprácu na otvorených projektoch, sa nachádzajú na stránke http://bazaar-vcs.org/LaunchpadIntegration.

Subversion

Subversion je systém s otvoreným zdrojovým kódom na správu verzií. Pomocou Subversion, môžete zaznamenať históriu zdrojových súborov a dokumentov. Spravuje súbory a priečinky v čase. Strom súborov je umiestnený v centrálnom úložisku. Úložisko je veľmi podobné súborovému serveru s tým rozdielom, že si pamätá každú zmenu vykonanú v súboroch a priečinkoch.

Subversion: stručný návod

Inštalácia

Aby sme mohli pristupovať k úložisku systému Subversion cez HTTP protokol, musíme nastaviť webový server. Správnu funkčnosť so systémom Subversion vykazuje webový server Apache2. Návod, ako nainštalovať webový server Apache2, nájdeme v časti HTTPD - webový server Apache2. Aby sme mohli do úložiska systému Subversion pristupovať cez HTTPS protokol, musíme nainštalovať a nastaviť digitálny certifikát pre webový server Apache 2. Návod na nastavenie digitálneho certifikátu nájdeme v časti Nastavenie HTTPS.

Subversion nainštalujeme zadaním nasledujúceho príkazu do príkazového riadka:

sudo apt-get install subversion libapache2-svn

Konfigurácia servera

V tomto kroku budeme predpokladať, že máme nainštalované vyššie spomínané balíky. V tejto časti si povieme, ako môžeme vytvoriť úložisko systému Subversion a vstúpiť do projektu.

Vytvorenie úložiska Subversion

Úložisko systému Subversion môžeme vytvoriť zadaním nasledujúceho príkazu do príkazového riadka:

svnadmin create /cesta/k/uložisku/projektu

Importovanie súborov

Po vytvorení úložiska môžeme naimportovať súbory do úložiska. Import do priečinka spustíme zadaním nasledujúceho príkazu do príkazového riadka:

svn import /cesta/k/import/priečinku file:///cesta/k/úložisku/projektu

Spôsoby prístupu

Do úložísk systému Subversion sa dá vstúpiť rôznymi spôsobmi - cez lokálny disk alebo pomocou rôznych sieťových protokolov. Umiestnenie úložiska však vždy zadávame vo forme URL adresy. V nasledujúcej tabuľke je popis rôznych metód prístupu.

Tabuľka 14.1. Metódy prístupu

Schéma

Spôsob prístupu

file://

Priamy prístup do úložiska (ak je na lokálnom disku)

http://

Prístup cez protokol WebDAV k Apache2 web serveru s podporou Subversion

https://

Rovnaký ako http://, len spolu s SSL šifrovaním

svn://

Prístup cez vlastný protokol k svnserve serveru

svn+ssh://

Rovnaký ako svn://, ale cez SSH tunel


V tejto časti si ukážeme, ako nastaviť Subversion, aby všetky tieto metódy prístupu fungovali. Povieme si len o základných nastaveniach. Viac informácii sa nachádza v knihe svn book.

Priamy prístup do úložiska (file://)

Toto je najjednoduchšia metóda prístupu. Nevyžaduje, aby bol spustený nejaký serverový proces Subversion. Táto metóda prístupu sa používa na prístup z rovnakej stanice ako je tá, na ktorej je umiestnené úložisko Subversion. Syntax príkazu, ktorý zadáme do príkazového riadka je nasledujúci:

svn co file:///cesta/k/uložisku/projektu

alebo

svn co file://localhost/cesta/k/uložisku/projektu
[Note]

Ak nezadáme názov stanice, je potrebné použiť tri lomky (///) -- dve pre protokol (file:// ) a jedno ako označenie kmeňového priečinka súborového systému. Ak zadáme názov stanice (localhost), stačia iba dve lomky (//).

Oprávnenia k úložisku závisia od oprávnení použíitých v súborovom systéme. Ak používateľ má právo na čítanie a zápis, môže prečítať obsah úložiska a zapisovať do neho.

Prístup cez protokol WebDAV (http://)

Ak chceme do úložiska Subversion pristupovať cez protokol WebDAV, musíme nastaviť webový server Apache 2. Musíme pridať nasledujúce riadky medzi zančky <VirtualHost> a </VirtualHost> do konfiguračného súboru /etc/apache2/apache2.conf:

 <Location /svn>
DAV svn
SVNParentPath /home/svn
AuthType Basic
AuthName "Názov nášho úložiska"
AuthUserFile /etc/subversion/passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
[Note]

Predchádzajúce konfiguračné riadky predpokladajú, že úložisko Subversion bolo vytvorené v priečinku /home/svn/ pomocou príkazu svnadmin. Bude sa dať ku nemu pristupovať pomocou URL adresy htpp://názov_stanice/svn/nazov_úložiska.

Aby bolo možné importovať a dokladať súbory do úložiska Subversion cez protokol HTTP, je potrebné, aby úložisko vlastnil používateľ HTTP. V systéme Ubuntu sa HTTP používateľ volá www-data. Vlastníka úložiska zmeníme zadaním nasledujúceho príkazu do príkazového riadka:

sudo chown -R www-data:www-data /cesta/k/úložisku
[Note]

Po zmene vlastníka úložiska na www-data nebude možné importovať a odosielať súbory do úložiska pomocou príkazu svn import file:/// pod iným používateľom než je www-data.

V ďalšom kroku vytvoríme súbor /etc/subversion/passwd, ktorý bude obsahovať autentifikačné informácie o používateľoch. Súbor vytvoríme zadaním nasledujúceho príkazu do príkazového riadka (ten vytvorí súbor a pridá prvého používateľa):

sudo htpasswd -c /etc/subversion/passwd meno_pouzivatela

Ak chceme pridať ďalších používateľov, môžeme vynechať prepínač "-c" inak by bol súbor nanovo vytvorený. Použijeme teda takýto príkaz:

sudo htpasswd /etc/subversion/password meno_pouzivatela

Po spustení príkazu bude potrebné zadať heslo. Po zadaní hesla sa pridá používateľ. Odteraz sa nový používateľ bude môcť pripojiť do úložiska spustením nasledujúceho príkazu:

svn co http://menoservera/sv
[Warning]

Heslo sa bude prenášať ako bežný text. Ak sa obávate odchytenia hesla, je potrebné použiť SSL šifrovanie. Viac informácii je v nasledujúcom texte.

Prístup cez protokol WebDAV s SSL šifrovaním (https://)

Spôsob pripojenia do úložiska Subversion cez protokol WebDAV s SSL šifrovaním (https://) je podobný prístupu http:// s tým rozdielom, že musíme nainštalovať a nastaviť digitálny certifikát pre webový server Apache2. Keď chceme použiť SSL spolu so Subversion pridáme konfiguráciu Apache2 uvedenú vyššie do súboru /etc/apache2/sites-available/default-ssl. Viac informácií o nastavovaní Apache2 spolu so SSL nájdeme v časti Konfigurácia HTTPS.

Môžeme nainštalovať digitálny certifikát podpísaný certifikačnou autoritou alebo nainštalovať sebou podpísaný certifikát.

Za predpokladu, že máme nainštalovaný a nastavený digitálny certifikát pre webový server Apache 2, môžeme vstúpiť do úložiska Subversion tak, ako je to popísané v predchádzajúcej časti. Spôsob prístupu je presne ten istý, s tým rozdielom, že na prístup do úložiska Subversion použijeme protokol https://.

Prístup pomocou vlastného protokolu (svn://)

Po vytvorení úložiska Subversion môžeme nastaviť prístupový protokol. Otvoríme súbor /cesta/k/úložisku/projektu/conf/svnserve.conf a nastavíme riadenie prístupu. Napríklad, ak chceme nastaviť autentifikáciu, odpoznámkujeme nasledujúce riadky v konfiguračnom súbore:

# [general]
# password-db = passwd

Po odpoznámkovaní predchádzajúcich riadkov môžeme upraviť zoznam používateľov v súbore passwd. Otvoríme súbor passwd, ktorý sa nachádza v rovnakom priečinku a pridáme nového používateľa. Syntax je nasledovná:

menopouzivatela = heslo

Viac informácií sa dozviete priamo v súbore.

Teraz môžeme vstúpiť do úložiska Subversion cez vlastný protokol svn://, buď z rovnakého alebo vzdialeného počítača, spustením príkazu svnserve. Syntax je nasledovná:

$ svnserve -d --foreground -r /cesta/k/úložisku
# -d -- režim démona
# --foreground -- spustí na popredí (užitočné pre ladenie)
# -r -- poskytnúť ako kmeňový priečinok

Viac informácie o príkaze získame po zadaní:
$ svnserve --help

Po spustení tohto príkazu Subversion začne načúvať na predvolenom porte (3690). Ak sa chceme pripojiť do úložiska project, musíme spustiť nasledujúci príkaz v príkazovom riadku:

svn co svn://nazovstanice/project project --username meno_pouzivatela

Ak je server tak nastavený, vyžiada si zadanie hesla. Po autentifikácii sa porovná kód s úložiskom Subversion. Ak chceme synchronizovať úložisko s lokálnou kópiou projektu, môžeme použiť príkaz svn update. Syntax príkazu je nasledovná:

cd priečinok_projektu ; svn update

Viac informácií o používaní podpríkazov príkazu svn sa dozvieme v referenčnej príručke. Napríklad, ak sa chceme dozvedieť viac o príkaze co (checkout), spustíme nasledujúci príkaz v príkazovom riadku:

svn co help

Prístup pomocou vlastného protokolu cez SSH tunel (svn+ssh://)

Konfigurácia a spustenie serverového procesu je rovnaká ako pri metóde svn://. Detaily sa nachádzajú v predchádzajúcej časti. V tomto kroku predpokladáme, že sme už vykonali predchádzajúce kroky a že sme spustili Subversion server pomocou príkazu svnserve.

Predpokladáme tiež, že je na počítači spustený ssh server, ktorý umožňuje pripojenia. Aby sme sa o tom uistili, prihlásime sa k počítaču pomocou ssh. Ak sme sa prihlásili, všetko funguje správne. Ak sa nám prihlásiť nepodarilo, je potrebné najskôr odstrániť tento problém. Návod, ako nainštalovať a nastaviť ssh server, sa nachádza v časti OpenSSH server.

Protokol svn+ssh:// sa používa na prístup k úložisku Subversion pomocou SSL šifrovania. Dátový prenos je šifrovaný pomocou tejto metódy. Ak sa chceme pripojiť do úložiska (napríklad pomocou príkazu checkout), použijeme nasledujúcu syntax:

svn co svn+ssh://nazovstanice/var/svn/repos/project
[Note]

Pri použití tejto metódy je potrebné použiť celú cestu (/cesta/k/úložisku/projektu) k úložisku Subversion.

Ak je server tak nastavený, vyžiada si prístupové heslo. Musíme zadať heslo, ktorým sa prihlasujeme cez ssh. Po prihlásení sa skontroluje kód z úložiska Subversion.

CVS Server

CVS je systém na správu verzií. Môžete ho použiť na zaznamenanie histórie zdrojových súborov.

Inštalácia

CVS nainštalujeme spustením nasledujúceho príkazu z príkazového riadka:

sudo apt-get install cvs

Po nainštalovaní cvs, by sme mali nainštalovať xinetd, aby sme mohli spustiť a zastaviť cvs server. V príkazovom riadku zadáme nasledujúci príkaz, ktorým nainštalujeme xinetd:

sudo apt-get install xinetd

Konfigurácia

Po nainštalovaní cvs sa automaticky inicializuje úložisko. V predvolenom stave sa nachádza v priečinku /var/lib/cvs. Toto umiestnenie môžeme zmeniť pomocou príkazu:

cvs -d /naše/nove/cvs/úložisko init

Keď sme inicializovali úložisko, nastavíme xinetd, aby spustil CVS server. Nasledujúce riadky nakopírujeme do súboru /etc/xinetd.d/cvspserver.

service cvspserver
{
port = 2401
socket_type = stream
protocol = tcp
user = root
wait = no
type = UNLISTED
server = /usr/bin/cvs
server_args = -f --allow-root /var/lib/cvs pserver
disable = no
}

 

[Note]

Nezabudnite zmeniť cestu k úložisku, ak ste zmenili predvolené úložisko (/var/lib/cvs).

Po nakonfigurovaní xinetd môžeme spustiť cvs server zadaním nasledujúceho príkazu:

sudo /etc/init.d/xinetd restart

Či je CVS server spustený, sa môžeme presvedčiť zadaním nasledujúceho príkazu:

sudo netstat -tap | grep cvs

Po spustení tohto príkazu by sme mali vidieť nasledujúci riadok alebo riadok jemu podobný:

tcp        0      0 *:cvspserver            *:* LISTEN 

Teraz môžeme pokračovať pridaním používateľov nových projektov a spravovať CVS server.

[Warning]

CVS umožňuje pridávať používateľov nezávisle od operačného systému. Pravdepodobne najjednoduchší spôsob pre CVS je ale použitie Linuxových používateľov, aj napriek možným bezpečnostým rizikám. Podrobnosti nájdete v CVS manuále.

Pridanie projektov

V tejto časti si povieme, ako pridať nový projekt do CVS úložiska. Vytvoríme priečinok a pridáme potrebný dokument a zdrojové súbory do priečinka. Teraz spustíme nasledujúci príkaz, ktorým pridáme projekt do CVS úložiska:

cd náš/projekt
cvs -d :pserver:pouzivatel@nieco.sk:/var/lib/cvs import -m "Importovanie projektu do CVS úložiska" . novy_projekt start
[Tip]

Miesto cesty k úložisku môžete použiť premmenú prostredia s názvom CVSROOT. Keď exportujete premennú prostredia CVSROOT, môžete vynechať prepínač -d v predchádzajúcom príkaze cvs.

Reťazec novy_projekt je označenie poskytovateľa a start je označenie vydania. V tejto chvíli reťazce neslúžia žiadnemu účelu, ale pretože CVS ich vyžaduje, musíme ich zadať.

[Warning]

Keď pridáte nový projekt, používateľ CVS musí mať právo na zápis do CVS úložiska (/var/lib/cvs). V predvolenom stave má právo na zápis skupina src, takže stačí ak používateľa do tejto skupiny. Potom môžeme pridávať a spravovať projekty v CVS úložisku.