<chapter id="cvs">
<title>&CVS;-i kasutamine</title>
<indexterm zone="cvs"><primary>CVS</primary></indexterm>
<indexterm zone="cvs"><primary>versioonikontroll</primary></indexterm>

<sect1 id="cvs-basics">
<title>&CVS;-i põhitõed</title>

<para>&CVS; on versioonikontrollisüsteem, mida kasutavad paljud avatud lähtekoodiga tarkvara projektid &mdash; sealhulgas &kde;. See salvestab kogu lähtekoodi ühte kohta, mida nimetatakse <emphasis>hoidlaks</emphasis>. Hoidlast võivad arendajad võtta välja projekti hetkeversiooni või selle mis tahes hetkest pärit seisu. Erinevalt mõnest teisest versioonikontrollisüsteemist ei ole vajadust <emphasis>lukustada</emphasis> faile, mille kallal töötad. Nii saab arendus käia sõna otseses mõttes paralleelselt. </para>

<para>Pärast oma ülesande lõpetamist arendaja <emphasis>kannab oma koodi sisse</emphasis> (lisades logiteate). &CVS; võtab enda peale mitme arendaja tehtud muudatuste ühendamise. Võib muidugi juhtuda, et arendajad on töötanud ühe ja sama asja kallal, mis tekitab konfliktseid muudatusi (tegelikult tuleb seda väga harva ette ning osutab suhtlemisprobleemidele). Sel juhul lükkab &CVS; sissekande tagasi ning faili saab sisse kanda alles siis, kui kõik konfliktid on lahendatud. </para>

<para>Öeldu hõlmas vaid &CVS;-i kõige elementaarsemaid omadusi, millega selle kasutamisel paratamatult kokku puudutakse. Kuid &CVS; suudab palju enamat: korraga võib seal paikneda ühe projekti mitu haru (&eg; &kde; 1.1.2 ja &kde; 2, mis olidki omal ajal &kde; arendusharud), ühest harust on võimalik muudatusi teise harusse liita, näha saab versioonidevahelisi erinevusi, failid säilitavad versiooniajalugu &etc; </para>

<para>&CVS; kujutab endast klient-server süsteemi. Kasutaja poolt käib kogu suhtlemine hoidlaga käsureaprogrammi &cvs; vahendusel. Kõrgema taseme kasutajaliidest pakuvad sellised rakendused nagu &cervisia; (<ulink url="http://cervisia.sf.net"></ulink>) või <application>TkCVS</application> (<ulink url="http://tkcvs.sf.net"></ulink>). &tdevelop;is saab kasutada vaid väikest osa &cvs;-i võimalustest, mis on olulised sinu igapäevatöö seisukohalt. </para>

<para>Me eeldame, et sul on juba põhiteadmised &CVS;-i kasutamisest, eriti just selle kohta, kuidas hoidlast konkreetse projekti faile välja võtta. Me soovitame lugeda Karl Fogeli raamatut <quote>Open Source Development With &CVS;</quote>, mida levitatakse vabalt (välja arvatud mittetehnilised peatükid). Vaata <ulink url="http://cvsbook.red-bean.com/cvsbook.html"></ulink>. </para>

</sect1> <!-- cvs-basics -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="cvs-commands">
<title>&CVS;-i käsud &tdevelop;is</title>

<para>Failivaadetes on kontekstimenüüs järgmised käsud: </para>

<variablelist>
<varlistentry>
<term>Lisa hoidlasse</term>
<listitem>
<para>Valmistab ette märgitud faili lisamise hoidlasse. Fail lisatakse lõplikult hoidlasse siis, kui sa kannad selle (või seda sisaldava kataloogi) hoidlasse sisse. </para>
</listitem>
</varlistentry>

<varlistentry>
<term>Eemalda hoidlast</term>
<listitem>
<para>Valmistab ette faili eemaldamise hoidlast. See kustutab faili ka kohalikust failisüsteemist, mistõttu seda käsku tuleks tarvitada suure ettevaatusega! </para>
</listitem>
</varlistentry>

<varlistentry>
<term>Uuenda</term>
<listitem>
<para>Käivitab käsu <command>cvs update</command>, mis ühendab kõik teiste kasutajate tehtud muudatused sinu töökataloogi. Käsku kataloogis andes toimub uuendamine tavaliselt rekursiivselt, kui sa ei ole seda just keelanud konfiguratsioonifailis <filename>.cvsrc</filename>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term>Kanna sisse</term>
<listitem>
<para>Käivitab käsu <command>cvs commit</command>, millega kantakse kõik kohalikud muudatused hoidlasse. Pane tähele, et enne seda tuleks enda faili uuendada, sest kui samadesse failidesse on vahepeal teinud muudatusi mõni teine kasutaja, annab &CVS; teada veast ega kanna sinu muudatusi sisse. </para>
</listitem>
</varlistentry>
</variablelist>

<para>&tdevelop; kutsub kõik need käsud välja alamprotsessidena ilma täiendavate käsureavõtmete või keskkonnamuutujateta. See võib tekitada probleeme, kui ühendus &CVS;-serveriga kulgeb üle &ssh; ühenduse, mis nõuab, et annaksid igal uuendamisel või sissekandmisel parooli. See on vajalik näiteks siis, kui sinu projekti majutab <filename>sourceforge.net</filename>. Selle probleemi lahendamise võimalusi kirjeldab &CVS;/SSH KKK, mille leiad SourceForge'i dokumentatsiooni seast. </para>

</sect1> <!-- cvs-basics -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="cvs-behind">
<title>Taustal</title>

<sect2 id="cvs-behind-workdir">
<title>Mida &CVS; salvestab töökataloogi</title>

<para>(... veel kirjutamata ...) </para>
</sect2> <!-- cvs-behind-workdir -->

</sect1> <!-- cvs-behind -->

</chapter> <!-- cvs -->
