LINUXZONE






 >> Hlavní stránka

(1713/30.07.2010)


 >> Administrace

(160/29.07.2010)


 >> Literatura

(305/28.07.2010)


 >> Bezpečnost

(340/30.07.2010)


 >> Programování

(307/19.04.2010)


 >> Distribuce

(97/09.06.2010)


 >> Síťování

(86/03.06.2010)


 >> Lokalizace

(10/15.09.2004)


 >> Aplikace

(175/12.04.2010)


 >> Multimedia

(32/31.03.2006)


 >> Hardware

(45/02.03.2007)


 >> Začínáme

(228/24.06.2010)


 >> Aktuálně

(556/27.07.2010)


 >> RELAX

(201/26.07.2010)


 >> Jinde vyšlo

přehled ostatních serverů




 Přihlášení




Login:
Heslo:
 uložit v prohlížeči


Nejste-li ješte zaregistrováni, můžete tak učinit zde.





 Vyhledávání




Hledaný výraz:
v klíčových slovech
v titulku
v anotaci
v textu








 Reklama









 Servis




*   Vaše náměty a připomínky
Máte k Linuxzone.cz nějaké připomínky nebo náměty? Našli jste na stránkách chybu? Dejte nám o tom vědět pomocí formuláře nebo v diskuzi.
Komentářů: 30
*   Podpořte Linuxzone.cz
Chcete podpořit náš server umístěním odkazu nebo zveřejněním backendu? Zde najdete vše potřebné.
*   Pište pro Linuxzone.cz
Máte zájem podílet se na obsahu Linuxzone.cz ať už jako redaktoři nebo i jinak? Dejte nám o sobě vědět!





 Aktuálně z bezpečnosti




-- 
6.12.2005, 19:01
Na serveru informit.com vyšla ukázková kapitola týkající se práce s řetězci z knihy Secure Coding in C and C++. (lz)

-- 
3.12.2005, 12:34
Bugtraq: Format String Vulnerabilities in Perl Programs. (lz)

-- 
3.12.2005, 12:32
Linux Advisory Watch December 2nd 2005. (lz)

-- 
23.10.2005, 13:28
Rozhovor na téma klasické zálohování versus CDP. (lz)

-- 
23.10.2005, 13:24
Linux Advisory Watch October 21st 2005. (lz)

další >>





 Aktuálně o software




-- 
6.12.2005, 19:07
Potřebujete-li pod linuxem rozchodit bezdrát založený na čipsetech Broadcom 43xx, konečně existuje linuxový ovladač. (lz)

-- 
6.12.2005, 19:04
Byla uvolněna verze Xen 3.0.0 virtualizační technologie XEN. (lz)

-- 
6.12.2005, 18:59
Byla uvolněna verze X11R6.9/X11R7 RC 3 grafickérho rozhraní X Window System. (lz)

-- 
3.12.2005, 12:45
Co je nového okolo projektu Amanda (open source zálohovací software)? Více na osnews.com. (lz)

-- 
3.12.2005, 12:40
Jak to akuálně v linuxu vypadá s podporou SATA.. (lz)

další >>





 Aktuálně z IT




-- 
3.12.2005, 12:51
Novellu se daří prodej linuxových produktů, oproti loňskému roku se Novell dočkal výrazného nárůstu. (lz)

-- 
3.12.2005, 12:48
Třetí verzi licence GPL by měla být publikována během jara 2007. (lz)

-- 
23.10.2005, 13:20
V Peru nyní mají zákon, který umožňuje nasazení open source software ve vládní správě. (lz)

-- 
23.10.2005, 13:14
Proč se Microsoft bojí Google? (lz)

-- 
27.9.2005, 22:01
Peru má zákon podporující free software. (lz)

další >>





 Nejčtenější články




-- 
Hurd včera dnes a zítra

-- 
XEN aneb virtualizujeme (3/6)

-- 
Security Digest (15/2010)

-- 
Fotografický ateliér

-- 
XEN aneb virtualizujeme (4/6)

-- 
Novinky ze světa svobodného software (16/2010)

-- 
Gamesárium [138]

-- 
Proč používat svobodný software?

-- 
Velká kniha sportovní fotografie

-- 
Security Digest (16/2010)






 Nejlepší články




-- 
Gamesárium [138]

-- 
Datové struktury bez předchozích znalostí

-- 
XEN aneb virtualizujeme (4/6)

-- 
XEN aneb virtualizujeme (3/6)

-- 
Security Digest (16/2010)

-- 
Novinky ze světa svobodného software (17/2010)

-- 
Velká kniha sportovní fotografie

-- 
XEN aneb virtualizujeme (5/6)

-- 
Security Digest (15/2010)

-- 
Proč používat svobodný software?






 Anketa




Používáte nějaké rozšíření bezpečnostního modelu linuxového jádra?

Openwall (18%)

LIDS (12%)

Pax/Grsecurity (3%)

SELinux (6%)

RSBAC (1%)

jiné (1%)

používám standardní jádro (59%)







Linuxzone.cz - server o Linuxu pro programátory, administrátory a fanoušky.
Provozuje společnost Impossible.
ISSN: 1213-8738





GNU arch

Velmi mnoho softwarových projektů dnes používá nějaký systém správy verzí. Snad každý vývojář svobodného softwaru se už setkal například s CVS, které je v této oblasti nejpopulárnější. CVS má své přednosti, ale i nedostatky. Proto se v poslední podobě objevují pokusy o vytvoření nových, vylepšených svobodných systémů správy verzí. Jedním z velmi zajímavých takových systémů je GNU arch.

Co je GNU arch

GNU arch je systém správy verzí souborů, zaměřený na distribuovaný vývoj svobodných projektů, potenciálně obsahujících mnoho verzí a větví.

Svobodné systémy správy verzí během své existence prodělaly určitý vývoj. Zprvu se pracovalo s poměrně jednoduchými nástroji poskytujícími prostředky pro základní verzování jednotlivých souborů a práci s jejich předchozími verzemi. Typickým představitelem této skupiny systémů správy verzí je RCS. Systémy tohoto druhu přestaly postačovat v době, kdy díky rozvoji Internetu na mnohých svobodných projektech začaly pracovat početnější skupiny, složené z vývojářů nacházejících se v různých koutech světa. Bylo nutno řešit problém práce více lidí nad jednou skupinou souborů. Velmi úspěšné bylo v tomto směru CVS, které se stalo velmi populárním nástrojem a s jehož pomocí je dnes spravována velká většina svobodných projektů. CVS zejména umožnilo práci více vývojářů nad stejnými soubory praktičtějším způsobem, než je prosté zamykání souborů na dobu jejich editace.

S další expanzí Internetu a přibývajícím množstvím vývojářů podílejících se na vývoji svobodného softwaru, vzrůstajícím větvením projektů a při stoupajícím počtu zasílaných záplat přestaly postačovat i schopnosti CVS. Trvalo však poměrně dlouho, než byl tento problém všeobecně rozpoznán jako podstatný a reálný a než se začaly objevovat první prakticky použitelné svobodné systémy, který by mohly nedostatky CVS napravit. Jedním z nejznámějších důsledků tohoto zpoždění je, že pro vývoj Linuxu bylo z důvodu nedostupnosti dostatečně sofistikovaného svobodného systému správy verzí vybráno proprietární řešení s problematickou licencí.

Arch je jedním ze svobodných systémů, které se snaží CVS nahradit a být dostatečně silným prostředkem, uzpůsobeným současným podmínkám vývoje svobodného softwaru. Je zaměřen přímo na distribuovaný vývoj, do kterého se může zapojit kdokoliv a kdekoliv. Nenavazuje na CVS ani na jiný systém správy verzí, jedná se o zcela nový systém s vlastní koncepcí.

Vlastnosti archu

Základní funkce

Za jeden z málo viditelných, ale důležitých konceptů archu lze považovat princip, že primární úlohou systému správy verzí není správa snapshotů verzí, nýbrž správa změn mezi verzemi. Nejzákladnější funkcí systému je tedy práce se změnami. První konkrétní funkcí, na kterou v tomto směru narazíme, je možnost vložení (commit) nové verze adresářového stromu do archívu projektu, spolu s patřičným logem.

Při provedení změny v softwarovém projektu bývá často modifikováno několik souborů, případně jsou i vytvořeny nové nebo naopak smazány již nepotřebné soubory a adresáře. Vložení nové verze je v archu operace atomická, je provedena najednou jako celek. Nedochází tedy k samostatnému verzování jednotlivých souborů jako v případě CVS. Zatímco CVS svádí k ukládání změn jednotlivých souborů nebo k večerním až nočním vkládáním výsledků celodenní práce, arch je orientován na ukládání jednotlivých změn. Provedete-li jednu zcela konkrétní změnu v programu jako je oprava jedné chyby nebo přidání jednoho nového rysu programu, je v archu přirozené vložit jako novou verzi přesně tuto jednu změnu. Mezi pozitivní přínosy takového přístupu ke správě verzí patří možnost snadné nápravy nepatřičných změn a hlavně snadná integrace konkrétních změn do jiných větví projektu.

Díky tomu, že arch do archívu nevkládá verze souborů, nýbrž změny, nevznikají zásadní potíže s mazáním adresářů a přejmenováváním jakýchkoliv souborů. S tím má notoricky známé problémy souborově orientované CVS, přičemž se v tomto případě jedná o nedostatek koncepční, nikoliv implementační, a tudíž obtížně odstranitelný. Arch tyto potíže nemá a kromě toho si hladce poradí i se symbolickými linky a přístupovými právy souborů.

Přidávání, mazání a přejmenovávání souborů lze v archu provádět vícero metodami, dle konfigurace stromu daného projektu. Máte na výběr mezi explicitním přidáváním, přejmenováváním a mazáním souborů archívu, nebo mezi jejich automatickým přidáváním a mazáním (v závislosti na jménu souboru), nebo mezi uváděním speciálních identifikátorů přímo v souborech, kde tyto umožňují automatické přidávání, přejmenovávání a mazání bez rizika nechtěně provedené akce.

Arch rozlišuje mezi několika typy souborů, jako jsou například zdrojové soubory, soubory, které má ignorovat, nebo soubory, které může sám mazat. Je to vlastně rozšíření mechanismu známého jako .cvsignore z CVS a využívá se kromě jiného pro výše uvedené automatické přidávání a odebírání souborů a při kontrolách obsahu zdrojového stromu.

Samozřejmostí jsou pak běžné funkce nad archívem jako je výpis seznamu verzí v archívu, informace o změnách v nich, možnost jejich vytažení a automatické spouštění akcí při změnách archívu.

Distribuované archívy

Jednou z nejsilnějších vlastností archu jsou distribuované archívy. Součástí každého identifikátoru archívu je e-mailová adresa. Každý vývojář určitého projektu tak může mít vlastní verzi archívu bez rizika nechtěného konfliktu jména se jménem jiného archívu a každý identifikátor archívu je jednoznačný. Přidáme-li k tomu další důležitou vlastnost, kterou je snadné větvení bez nutnosti kopírování celého archívu, lze snadno realizovat systém práce, kdy každý vývojář pracuje nad jedním nebo více vlastními archívy anebo větvemi projektu a koordinátor projektu pak vybrané verze vkládá do hlavního stromu projektu. Klasický model s jediným archívem to samozřejmě nevylučuje, lze jej používat také.

Máme-li už distribuované archívy, je vhodné je mít co nejsnáze přístupné. Arch je v tomto směru poměrně flexibilní, zejména opět v porovnání s některými jinými systémy správy verzí. Archívy archu je možné kromě lokálního přístupu zpřístupnit i prostřednictvím FTP, sftp, WebDAVu nebo prostého HTTP. Chcete-li tedy své archívy vystavit pro čtení, stačí je umístit na své WWW stránky. Nejste tak kromě jiného na straně serveru ani klienta závislí na žádných zvláštních funkcích nabízených nebo nenabízených vaším poskytovatelem připojení k Internetu, což opět odpovídá duchu vývoje svobodného softwaru.

Se zpřístupněním archívu souvisí i možnost vytváření tzv. knihoven verzí (revision libraries). To jsou adresářové stromy obsahující všechny větve a verze projektu. Využít je lze jednak pro urychlení některých operací, nejtypičtěji asi vytažení konkrétní verze z archívu, a jednak pro snadné zpřístupnění všech verzí pro prohlížení, není tak kupříkladu opět žádným velkým problém vše vystavit přímo na Webu. Arch přitom v knihovnách verzí používá hard linky, takže nedochází k neúnosnému plýtvání diskovým prostorem.

Archívy je též možno zrcadlit, a to oběma směry -- stáhnout si dostupný archív k sobě, i vystavit vlastní archív na jiném stroji. Druhá funkce je velmi užitečná, pracujete-li na stroji, který není (permanentně) připojen k Internetu. Můžete během práce do svého archívu normálně vkládat nové verze i při nedostupném internetovém připojení a v okamžiku připojení k Internetu je ozrcadlit do veřejného prostoru, například na své webové stránky.

K dispozici je též cachování, pokud nestojíte o neustále sestavování stromů a stahování dat. Cachování je mechanismus odlišný od výše zmíněných knihoven verzí i zrcadlení. Zatímco knihovny verzí obsahují obrazy adresářových stromů jednotlivých verzí projektu s doplňujícími informacemi a zrcadlení stahuje celé části archívů, cache obsahuje ve vhodné podobě data nutná pro provedené operace.

A nakonec potěší skutečnost, že soubory v archívu jsou gzipovány, takže se není třeba obávat zbytečné zátěže síťových linek.

Spojování změn

Aby vše výše uvedené fungovalo, je nutné, aby při správě verzí bylo možno vzájemně spojovat (merge) velerůzné verze.

Prvním potřebným nástrojem je aktualizace současného zdrojového stromu vůči archívu, tj. zařazení změn z archívu do stromu, provedených od poslední aktualizace stromu. Arch dává na výběr mezi aplikací změn provedených ve stromu od poslední aktualizace stromu na strom odpovídající aktuální verzi archívu (aplikace celkové změny stromu na archív) a mezi postupným provedením jednotlivých (všech nebo jen explicitně zadaných) změn z archívu na strom od jeho poslední aktualizace (aplikace jednotlivých změn archívu na strom). Druhou funkci lze využít i pro zařazení pouze vybraných změn z jiné větvě projektu.

Druhým potřebným nástrojem je synchronizace prolínajících se větví projektu. Při vzájemné nepravidelné synchronizaci různých větví je aktualizace komplikovanější, neboť je nutná určitá opatrnost při postupné aplikaci změn, aby nedocházelo ke zbytečným konfliktům. Arch poskytuje prostředek pro automatické řešení takových situací, tzv. star-merge.

Spolupráce s CVS

Spolupráce archu s CVS je v závislosti na stylu práce více či méně komplikovaná. Oba systémy jsou příliš odlišné, a proto je obvykle nejlepší v případě potřeby na arch přejít kompletně. Nicméně je možné vytvářet jakási archová zrcadla CVS archívu a k nim pak již normálně vytvářet archové větve.

Hlubší zájemce o problematiku spolupráce archu s CVS lze odkázat na příslušné Wiki.

Jak se arch používá

Nebudeme čtenáře unavovat zbytečným opisováním instalačního návodu a přejdeme raději rovnou k věci. Uvedeme si jednoduchý příklad založení nového archívu a vložení nového projektu do něj. Budete-li chtít arch začít používat, rozhodně si přečtěte jeho tutoriál.

Aktuální verze GNU archu je distribuovaná pod názvem tla (existuje i odštěpená verze nazvaná ArX). Můžete si nainstalovat příslušný balík ze své oblíbené distribuce nebo si jej sami stáhnout a zkompilovat. Tak získáte program tla.

Program tla obsahuje sadu mnoha příkazů, které se zadávají jako první argument. Nejdůležitějším příkazem je help

  $ tla help

který vypíše seznam všech příkazů. Ke každému příkazu pak lze použít volbu -H, která vypíše kompletní popis příkazu, nebo volbu -h, která vypíše jen seznam voleb příkazové řádky příkazu bez doplňujícího popisu celého příkazu. Například:

  $ tla commit -H

Chcete-li si založit tla archív, musíte typicky provést následující kroky:

  $ tla make-archive adresa@nějaká.doména--archive-name /some/directory
  $ tla make-category adresa@nějaká.doména--archive-name/test
  $ tla make-branch adresa@nějaká.doména--archive-name/test--mainline
  $ tla make-version adresa@nějaká.doména--archive-name/test--mainline--0.1

Vytvoření aspoň jedné kategorie, její větve a verze je povinné. Příslušné tři kroky lze také provést jediným příkazem

  $ tla archive-setup adresa@nějaká.doména--archive-name/test--mainline--0.1

Nyní si můžete založit zdrojový strom (nebo použít již existující) a importovat ho do archívu:

  $ mkdir /source/tree
  $ cd /source/tree
  $ tla init-tree adresa@nějaká.doména--archive-name/test--mainline--0.1
  $ tla import

A nakonec provést nějakou změnu a její commit:

  $ touch foo.c
  $ tla add-id foo.c
  $ emacs $(tla make-log)
  $ tla commit

Trocha historie

Arch je zajímavý i z hlediska své historie. Dlouhou dobu byl vyvíjen víceméně jako one-man-show svého autora Thomase Lorda. Původně měl podobu shellových skriptů, které správu verzí prováděly spojováním funkcí různých programů. Jednalo se o prototypové řešení, které mělo umožnit zaměřit se zpočátku především na koncepci systému spíše než na jeho implementaci.

Prototypový shellový přístup, s důrazem na definici funkcionality a teprve následnou optimalizaci, narážel u některých lidí na nepochopení. Navíc autor programu přišel o zaměstnání, dostal se do existenčních potíží a vývoj archu na čas uvázl. Uživatelé nebo možná tehdy spíše experimentátoři archu se potýkali s neopravovanými chybami archu a jeho pomalostí. Jedním z důsledků této situace bylo odštěpení větve projektu pod názvem ArX.

Tomu Lordovi se však časem podařilo vývoj archu oživit. Úspěšně jej přepsal do jazyka C a vznikla již dobře použitelná verze 1.0, distribuovaná pod názvem tla. Arch má dnes charakter plnohodnotného systému správy verzí, do kterého se implementují pokročilé rysy jako kontroly integrity archívu a na kterém spolupracuje několik vývojářů. Arch je nyní bezpochyby kvalitním systémem správy verzí, směřujícím k tomu, aby se stal plnohodnotnou náhradou nejen CVS, nýbrž i pokročilých proprietárních řešení.

Relativní úspěch archu však nic nezměnil na situaci Toma Lorda. Vývoj archu byl úspěšný jen díky jeho tvrdohlavosti, se kterou na tomto velmi zajímavém softwaru naplno pracoval a pracuje i ve složité osobní situaci, kdy je bez peněz a má dluhy. Arch totiž není pro softwarové firmy dostatečně zajímavý na to, aby jeho vývoj finančně podpořili nebo aby jeho autora zaměstnali. Takže Tom Lord zatím přežívá jen díky dobrovolným příspěvkům řadových uživatelů svého systému.

Zhodnocení archu

Arch je velmi zajímavý systém správy verzí a kdo má rád inovativní, principiálně jednoduché a přitom mocné softwarové prostředky, snadno si jej oblíbí. Arch je svobodný nejen svojí licencí, nýbrž i koncepcí umožňující velmi snadné zapojení se do kteréhokoliv archem spravovaného projektu.

Přechod z CVS není úplně snadný, nikoliv však kvůli komplikovanosti archu, nýbrž proto, že je potřeba se zbavit určitých návyků až zlozvyků z práce s CVS. Jakmile k tomuto mentálnímu odblokování dojde, stává se práce s Archem velmi přirozená a snadná.

Současná implementace tla je plně prakticky použitelná a kromě oprav občasných chyb dochází k přidávání dalších zajímavých rysů, kromě jiného i s ohledem na konkurenční systémy. Osobně necítím potřebu nadále používat CVS z jiného důvodu, než je kompatibilita s jinými vývojáři nebo projekty. Co naopak v archu postrádám, je možnost kompletního zrušení posledního vložení verze. Pokud například do archívu omylem vložíte nějaký veliký soubor a nechcete jej tam mít v podobě zaznamenané verze uložen navždy, nezbývá vám, než se s dostatečnou míru opatrnosti povrtat v adresářovém stromu archívu.

Arch není jediný systém svého druhu. Asi nejznámějším pokusem o náhradu CVS je Subversion, který je svojí koncepcí CVS poměrně blízký. Máte-li zkušenosti s kterýmikoliv takovými systémy, můžete je uvést v komentáři ke článku nebo o nich nějaké články napsat.

Odkazy


 Přispějte nám




Líbil se Vám tento článek? Můžete ho ocenit zavoláním na tel. číslo 906 460 134.
Cena hovoru za 1 minutu je 46 Kč.





 Hodnocení článku




Článek hodnotím jako:  [1] výborný   [2] dobrý   [3] průměr   [4] špatný   [5] hrůza  





 Komentáře




--

Milan Zamazal, 30. 01. 2004 16:29
Re: Emacs + tla (gnu arch)












--

 - , 30. 01. 2004 16:05
Emacs + tla (gnu arch)












--

Milan Zamazal, 22. 01. 2004 13:55
Re: sourceforge.net












--

GiX, 22. 01. 2004 11:51
sourceforge.net












--

Milan Zamazal, 22. 01. 2004 09:35
Re: Arch over SSH












--

Yeti, 22. 01. 2004 09:23
Arch over SSH












--

OERNii, 21. 01. 2004 14:26
Hmm, pekne, este tak spolupraca s CVS















PŘIDAT KOMENTÁŘ ZOBRAZ VŠE >>










2002 © Impossible, s.r.o.   >> Kontaktujte redakci >> Právní upozornění >> Reklama