|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
Menu
Distributions (131)
Software (10844)
|
CVS - II4-dílný seriál o SCM systému CVS, který má za cíl popsat základní principy práce s tímto systémem. Checkout, první commit-y, prohlížení logů.
Správa prvního projektu v systému CVSMáme tedy první projekt uložený v systému CVS. Kdykoli budeme chtít na
projektu pracovat, přepneme se do adresáře, ve kterém chceme pracovat. V
tomto adresáři spustíme příkaz: Tento příkaz udělal to, že vytvořil v pracovním adresáři poadresář
prvniprojekt, a do něj nahrál aktuální verzi všech souborů. Kromě toho si
do každého adresáře přidal poadresář CVS se svými údaji. Nyní můžete v
souborech měnit, co se vám líbí. Opravovat chyby, dopisovat, zkrátka
pracovat na projektu. Po skončení práce je potřeba vaše změny nahrát zpět
do systému CVS, a to příkazem: Příkaz commit zaznamenává změny na projektu zpět do systému CVS. Teď se možná ptáte, co je na tom tak úžasné. Třeba to, že na projektu může pracovat více lidí najednou, a systém CVS si dokáže poradit i v případě, že více lidí změní stejný soubor. A nebo Vám dokáže vytáhnout stav projektu, jaký byl v libovolné chvíli. Chcete získat stav souborů přesně tak, jako byl třeba 2. prosince? Není to problém. A to je jenom velice malá přehlídka jeho možností. Nikdy žádnou změnu neztratí, a přitom zbytečně neplýtvá diskovým prostorem. Ukládá si totiž pouze změny od předchozí verze, takže jeho data o projektu zabírají poměrně málo místa na disku. Nutno říci, že příkaz commit je daleko flexibilnější, než bylo
uvedeno. Můžete například uložit změny pouze jednoho souboru: Při používání příkazu commit zjistíte, že systém CVS kontroluje pouze
soubory, které tam už byly při zakládání projektu. V pracovním adresáři si
tedy můžete vytvořit spousty souborů, ale systém CVS si všimne jenom těch,
které tam byly od počátku. Pokud potřebujete přidat nový soubor do systému
CVS, použijte příkaz spuštěný z pracovního adresáře: Systém CVS pracuje se skupinou souborů nazývaných projektem, jak už bylo řečeno výše. Každý soubor, který má být součástí projektu je nutné zaregistrovat, aby CVS věděl, že má hlídat změny i tohoto souboru. To se provádí dvěma způsoby. Prvním je příkaz import, který provede vytvoření nového projektu v systému CVS, a zároveň zaregistruje všechny soubory v aktuálním adresáři i jeho podadresářích. Příkaz import je určen ke kompletnímu vytvoření projektu, to znamená, že navíc všechny soubory nahraje do projektu. Pokud již máme projekt v systému CVS vytvořený, používá se druhý způsob, a to příkaz add. Tento příkaz zařídí, že systém CVS bere na vědomí, že součástí projektu se stal další soubor, a nic víc! To znamená, že aktuální verze nového souboru není nahrána do systému CVS! To se provede až dalším příkazem, který slouží k nahrávání změněných souborů do systému CVS, a tím je commit. Tedy ještě jednou: po použití příkazu add si systém CVS pouze poznamená, že od této chvíle bude součástí projektu i nově zadaný soubor. Tento soubor si ale nenahraje do systému CVS, protože by v tom byl zmatek. Jediný příkaz, který umožňuje nahrávat změny souborů do systému CVS, je příkaz commit. Proto vám příkaz add vypíše (v angličtině) zprávu, že si poznamenal, že soubor patří do projektu, ale počká si na příkaz commit, který tento soubor nahraje do systému. A poté již bude automaticky nahrávat i změny v novém souboru od všech lidí, kteří pracují na projektu. Teď již tedy víte, že každý nový soubor je potřeba do projektu zaregistrovat. Dát prostě systému na vědomí, aby nový soubor také považoval za součást projektu. Při registrování je potřeba upozornit na dvě důležité skutečnosti. Za prvé, pokud vytvoříte nový podadresář v projektu, je potřeba ho také zaregistrovat pomocí příkazu add. Provádí se to úplně stejně, jako kdyby to byl soubor. A až potom je možné zaregistrovat soubory v tomto podadresáři. Pokud tedy v pracovním adresáři založíme nový podadresář, a v něm nový soubor, je potřeba nejdříve přidat do systému CVS podadresář, a až poté nový soubor. Podadresář se přidává úplně stejně jako soubor, jenom místo jména souboru uvedeme jméno adresáře. Druhou důležitou skutečností je to, že musíte dát systému CVS na vědomí,
co je čistý textový soubor, a co je binární soubor. Binárním souborem se
rozumí například obrázky, dokumenty Office, i když je to z Wordu, apod.
Pokud se jedná o čistý text, nic zvláštního se neděje, pokud budete
pracovat s binárními soubory, je nutné při registraci tohoto souboru dát
systému CVS na vědomí, že to není čistý text! V takovém případě je při
registrování pomocí příkazu add nutné použít volbu -kb. V
textových souborech totiž provádí CVS určité optimalizace. Příkaz na
přidání binárních souborů vypadá tedy takto: Pokud přidáte binární soubor, například obrázek, aniž byste systému CVS sdělili, že se nejedná o čistý text, systém CVS takový soubor zdeformuje. Je tedy potřeba si na toto dávat pozor. Pokud čistě náhodou na to zapomenete, a přidáte binární soubor bez volby -kb, tak se to dá opravit následujícím způsobem:
Někdy se naopak stane, že potřebujeme nějaký soubor vymazat z projektu.
Potom se nám hodí příkaz remove: A opět je potřeba zdůraznit, že příkaz remove nedělá nic jiného, než odregistrovává soubor z projektu. Říká tedy, že soubor přestal být součástí projektu, a systém CVS nebude již dále zaznamenávat změny v tomto souboru. Samozřejmě, že pokud budete chtít vytáhnout ze systému CVS verzi z doby, dokud byl tento soubor součástí projektu, tak ho tam systém CVS přidá, ale ve verzích nahraných do CVS po použití příkazu remove ho přestávají zajímat změny na odregistrovaném souboru. Příkaz remove nikde nic nemaže, a v pracovním adresáři vám vše
nechá v původním stavu. Ale pro úspěšný průběh příkaz remove bude
potřeba, aby odstraňovaný soubor v pracovním adresáři nebyl. Pokud budete
chtít odstranit soubor, který je přítomný v pracovním adresáři, CVS nic
neprovede, a pouze vám vypíše hlášení v anglickém jazyce. Proto je klasický
postup pro mazání nejdříve smazat soubor z pracovního adresáře, a poté ho
odstranit příkazem remove. Aby se nám nezauzlovaly prsty, pokud
budeme rušit více souborů, nabízí CVS parametr -f. Ten provede navíc
smazání souboru z pracovního adresáře, a udělá tedy oba kroky naráz: Toto je v zásadě to nejdůležitější, co potřebujete ke správě projektu pomocí systému CVS, zejména, pokud ho spravujete sami. Další kapitoly se zabývají některými dalšími finesami systému CVS. Toto vám stačí, abyste si řídili svůj projekt sami doma. Další čtení vám umožňuje ze systému CVS získat více, nebo pracovat ve vícečlenném týmu, ale v zásadě pokud jste dočetli sem, jste schopni si řídit svůj vlastní projekt v jednočlenném týmu sami doma. Výpisy změn v souborech - logyV této kapitole si něco povíme o zjišťování změn v souborech uložených do systému CVS. Systém CVS nazývá prostor, ve kterém ukládá data jako repository, ve svých manuálech. Pokud jsme již soubor několikrát změnili, někdy bývá užitečné zjistit, jaké změny jsme provedli. Pokud jste již práci se systémem CVS zkusili, zjistili jste, že vás CVS nutí každou změnu okomentovat. Většina příkazů má možnost zadaní volby -m, za kterou následuje v uvozovkách poznámka. Pokud poznámku nezadáte, CVS spustí editor, aby jste ji dopsali. Mírně ironicky by se dalo napsat, že vás "nevtíravým" způsobem nutí, aby jste ke každé změně dopsali komentář, co jste to vlastně udělali. Tyto komentáře mají svůj smysl, jsou totiž přístupné všem. Kromě toho CVS při každé změně zaznamenává datum a čas změny, kdo změnu provedl, zvýší automaticky číslo verze, a další údaje. Kromě toho umožňuje tyto údaje doplnit i do textu v souborech, které jsou součástí projektu. Začneme tedy něčím jednoduchým. Jak zjistit celou historii změn nějakého
souboru? Stačí na to následující příkaz: Příkaz log vypisuje všechny možné informace o souboru, který si CVS udržuje. Můžete si tam přečíst i zadané komentáře, kdo změny provedl (tedy ne že by tam bylo přímo jméno, ale objeví se tam přihlašovací jméno toho, kdo spustil cvs commit). Samozřejmostí jsou data, čas, apod. Snad jenom poznámku, příkaz log je možné spustit i bez udání jména souboru, potom vypíše informace o všech souborech, což je pěkně rozsáhlé. Vzhledem k rozsahu logovacího výpisu i pro jeden soubor se většinou
výstup ještě nějak upravuje. Buď se za příkaz připojí filtr more, který
zajistí, že se text zastaví po každé obrazovce, a neodjede: Také je možné logovací výpis uložit do souboru: Logovací výpisy můžeme řídit různými volbami. Jak si můžeme snadno
ověřit, jsou logovací výpisy velmi rozsáhlé. Mnohdy potřebujeme pouze
seznam souborů uložených v repository (tedy zaregistrovaných souborů a
adresářů). Toho dosáhneme takto: Další volbou je zobrazit pouze změny souborů, které provedl určitý
člověk. Předem je potřeba říci, že CVS ukládá s každou změnou provedenou
pomocí příkazu commit automaticky i informaci, kdo změnu nahrál.
Není to zde ale uloženo jako jméno a příjmení, ale CVS si zjistí, kdo je k
počítači momentálně přihlášený, a zapíše si toto přihlašovací jméno. Pokud
je potřeba zjistit, které všechny změny má na svědomí uživatel s
přihlašovacím jménem sandokan, použijte: Pokud Vám vadí, že se vypisují i soubory v podadresářích, pomocí volby -l (malé písmeno L, nikoli číslice 1) zajistíte, že se budou vypisovat pouze soubory v aktuálním adresáři. Velmi často Vás také zajímají změnu provedené v určitém čase, třeba za
minulý měsíc (aby se vědělo, kdo si zaslouží prémie :-)) ), před dvěma
týdny apod. K tomu je určena volba -d, která má velice bohaté
možnosti. V následujících příkladech jsou některé z nich uvedeny: Výše uvedené informace lze kombinovat, takže například, chcete-li vědět,
co všechno změnil uživatel s přihlašovacím jménem abcdefgh za poslední
týden v současném adresáři, použijete: Automatické přidávání informací o verzi do souboru, nahrazování klíčových slovPokud vyvíjíme nějaký projekt, stane se někdy, že se ptáme, a jakou verzi souboru máš? To se dá zjistit pomocí datumu a času, ale není to ono. Jak tedy zajistit, aby v každém souboru byly napsány potřebné informace, třeba zrovna číslo verze? Nebo další údaje? Systém CVS toto umožňuje pomocí klíčových slov. Pokud kamkoli do
nějakého textového souboru, který je součástí projektu napíšete třeba: Samozřejmě takových údajů je celá řada, a jsou vyjmenovány a popsány v následujícím seznamu:
Asi nejčastěji se používá klíčové slovo $Id$. Rozepíšeme si jeho
výstup podrobněji. Pokud do textu souboru dopíšeme toto slovo, učiníme tak
do komentářů. Například v HTML souboru bude vypadat asi takto: Pokud provedeme příkaz commit, objeví se rozvinutý test namístě
$Id$: Zde vidíte všechny podstatné údaje o souboru přímo v něm. Vidíte, že soubor se jmenuje cvs_manual. V repository si CVS systém za jméno souboru ukládá čárku a písmeno v. Takže v repository je tento soubor uložen jako cvs_manual.html,v. Dále pokračuje číslo verze, v našem případě 1.1. Poté následuje datum a čas na nultém poledníku, přihlašovací jméno toho, kdo jej uložil, a stav verze, kde Exp znamená experimentální verzi, Stab stabilní verzi a Rel verzi určenou k distribuci. Tak jsou všechny informace po ruce přímo v souboru. Podíváte-li se do mnohých kódů například pro Linux, mnohdy tam klíčové slovo $Id$ najdete. Je jasné, že pokud použijete automatické nahrazování klíčových slov v nějakém souboru, či ve všech, je potřeba klíčová slova dávat do poznámek, aby nenarušily funkci souboru. Například v jazyce C můžete napsat /* $Id$ */, apod. Dále je potřeba dávat pozor, aby se v souboru náhodou nevyskytly řetězce, které CVS pozná jako klíčové slovo (pokud to není váš záměr). Například já v tomto manuálu nemůžu rovnou napsat $Id$, protože by po tomto řetězci CVS okmžitě "skočil", a nahradil jej. Musím využít toho, že znak $ se může v HTML zapsat jako $, což už CVS nechá na pokoji. Pokud bych chtěl to samé zapsat v jazyce C, aniž by mi to CVS nahradil, musel bych psát třeba char mytxt[] = "\x24Id\x24";, aby mi ho CVS nechal na pokoji. Dlužno ovšem napsat, že takové situace se v praxi vyskytují velice, velice zřídka, takže problémy vám to nejspíše dělat nebude. V krajním případě, pokud nelze jinak, je možné nahrazování klíčových slov zakázat. Jak to lze provést, se dozvíte ještě v této kapitole. Občas se vám nehodí, aby systém CVS automaticky nahrazoval klíčová
slova, a tak máte možnost tento proces řídit. Standardně CVS nahrazuje
klíčová slova ve všech souborech v projektu. CVS umožňuje ke každému
souboru sdělit, jaký režim nahrazování klíčových slov použijete. Tento
režim je možné určit pomocí příkazů add při registraci souboru, a
nebo pomocí příkazu admin ho kdykoli později změnit: U volby -krežim se mohou použít tyto možnosti:
Licence: Tento dokument lze volně šířit pro nekomerční účely, bude-li zachováno jméno autora a copyright. Pro komerční účely pouze s písemným svolením autora.
|
Search Software
Search Google
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
©Pavel Kysilka - 2003-2024 | maillinuxsoft.cz | Design: www.megadesign.cz |