<chapter id="cvs">
<title
>Använda &CVS;</title>
<indexterm zone="cvs"
><primary
>CVS</primary
></indexterm>
<indexterm zone="cvs"
><primary
>versionskontroll</primary
></indexterm>

<sect1 id="cvs-basics">
<title
>&CVS; grunder</title>

<para
>&CVS; är versionshanteringssystemet som många projekt med öppen källkod, inklusive &kde;, använder. Det lagrar all källkod på en centralt plats, som kallas <emphasis
>arkivet</emphasis
>. Utvecklare hämtar en aktuell version av projektet eller versioner av det vid godtyckliga tidpunkter, från arkivet. I motsats till vissa andra versionshanteringssystem, är det inte nödvändigt att <emphasis
>låsa</emphasis
> filer som man ska arbeta med. Alltså kan utveckling ske parallellt i stor utsträckning. </para>

<para
>Så fort en utvecklare är klar med en uppgift, <emphasis
>arkiverar</emphasis
> han sin kod (tillsammans med ett loggmeddelande). &CVS; tar hand om arbetet att sammanfoga ändringar som görs av flera utvecklare. Det kan förstås hända att utvecklare arbetar med samma kodavsnitt, vilket ger upphov till ändringar med konflikter (i praktiken inträffar detta sällan, och är ofta ett tecken på bristande kommunikation). I detta fall, förkastar &CVS; arkiveringen. En fil kan bara arkiveras efter alla konflikter har lösts upp. </para>

<para
>Hittills har de grundläggande funktionerna i &CVS;, som man oftast måste hantera, beskrivits. Men &CVS; erbjuder mycket mer: Man kan hantera flera grenar av ett projekt (t.ex. var &kde; 1.1.2 och &kde; 2 grenar i &kde;:s utvecklingsträd), sammanfoga ändringar från en gren till en annan, fråga efter skillnader mellan versioner och filers versionshistorik, etc. </para>

<para
>&CVS; implementeras som ett klient-serversystem. Som användare, sker all kommunikation med arkivet via kommandoradsprogrammet &cvs;. Gränssnitt på högre nivå är tillgängligt via program som <application
>Cervisia</application
> (<ulink url="http://cervisia.sf.net"
> </ulink
>) eller <application
>TkCVS</application
> (<ulink url="http://tkcvs.sf.net"
></ulink
>). Bara en liten del av &cvs; funktioner, som är viktiga under det dagliga arbetet, kan användas direkt i &kdevelop;. </para>

<para
>Grundläggande kunskap om användning av &CVS; förutsätts. I synnerhet bör du veta hur ett givet projekt hämtas från arkivet. Vi rekommenderar boken <citetitle pubwork="book"
>Open Source Development With CVS</citetitle
> av Karl Fogel, som kan spridas fritt (utom de icke-tekniska kapitlen). Se <ulink url="http://cvsbook.red-bean.com/cvsbook.html"
></ulink
>. </para>

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

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

<sect1 id="cvs-commands">
<title
>&CVS;-kommandon i &kdevelop;</title>

<para
>Följande alternativ är tillgängliga i filvyernas sammanhangsberoende menyer: </para>

<variablelist>
<varlistentry>
<term
>Lägg till i arkivet</term>
<listitem>
<para
>Förbereder en fil för att läggas till i arkivet. Filen överförs till arkivet när du arkiverar den (eller katalogen som den finns i) nästa gång. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>Ta bort från arkivet</term>
<listitem>
<para
>Förbereder en fil för att tas bort från arkivet. Det här tar också bort filen från det lokala filsystemet, så använd funktionen med försiktighet! </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>Uppdatera</term>
<listitem>
<para
>Kör kommandot <command
>cvs update</command
> för att sammanfoga eventuella ändringar från andra användare till din arbetskatalog. När du använder menyalternativet för en katalog, sker uppdateringen normalt rekursivt, utom om du har stängt av det i inställningsfilen <filename
>.cvsrc</filename
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>Arkivera</term>
<listitem>
<para
>Kör <command
>cvs commit</command
> för att arkivera alla lokala ändringar i arkivet. Observera att du bör uppdatera innan du gör detta. Om en annan användare tidigare har arkiverat sina ändringar, kan &CVS; annars ge ett felmeddelande. </para>
</listitem>
</varlistentry>
</variablelist>

<para
>Alla kommandon startas som underprocesser av &kdevelop;, utan ytterligare kommandoradsväljare eller miljövariabler. Det här kan vara ett problem om anslutningen till &CVS;-servern går via en &ssh;-anslutning, och kräver att du skriver in ett lösenord varje gång du arkiverar eller uppdaterar. Det här är till exempel nödvändigt om projektets värd är <filename
>sourceforge.net</filename
>. Ett sätt att gå runt problemet beskrivs i vanliga frågor om CVS/SSH, som du hittar i SourceForge-dokumentationen. </para>

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

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

<sect1 id="cvs-behind">
<title
>Bakom ridån</title>

<sect2 id="cvs-behind-workdir">
<title
>Vad &CVS; sparar i arbetskatalogen</title>

<para
>(...ännu inte skrivet...) </para>
</sect2
> <!-- cvs-behind-workdir -->

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

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