<chapter id="cvs">
<title>Brug af &CVS;</title>
<indexterm zone="cvs"><primary>CVS</primary></indexterm>
<indexterm zone="cvs"><primary>revisionskontrol</primary></indexterm>

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

<para>&CVS; er versionshåndteringssystemet som mange projekter med åben kildekode, inklusive &kde; &mdash; bruger. Det opbevarer al kildekode på et centralt sted, som kaldes <emphasis>arkivet</emphasis>. Udviklere henter en aktuel version af projektet eller versioner af det på vilkårlige tidspunkter, fra arkivet. I modsætning til visse andre versionshåndteringssystemer, er det ikke nødvendigt at <emphasis>låse</emphasis> filer som man skal arbejde med. Altså kan udvikling ske parallelt i stor udstrækning. </para>

<para>Så snart en udvikler er færdig med en opgave, <emphasis>arkiverer</emphasis> han sin kode (sammen med en logmeddelelse). &CVS; tager sig af arbejdet med at sammenflette ændringer som laves af flere udviklere. Det kan naturligvis ske at udviklere arbejder med samme kodeafsnit, hvilket giver anledning til ændringer med konflikter (i praksis indtræffer dette sjældent, og er ofte et tegn på bristende kommunikation). I dette tilfælde, forkaster &CVS; arkiveringen. En fil kan kun arkiveres efter alle konflikter er løst op. </para>

<para>Hidtil er de grundlæggende funktioner i &CVS;, som man oftest skal håndtere, beskrevet. Men &CVS; tilbyder meget mere: Man kan håndtere flere grene af et projekt (f.eks. var &kde; 1.1.2 og &kde; 2 grene i &kde;'s udviklingstræ), sammenflette ændringer fra en gren til en anden, spørge efter forskelle mellem versioner og filers versionshistorik, etc. </para>

<para>&CVS; implementeres som et klient-serversystem. Som bruger, sker al kommunikation med arkivet via kommandolinjeprogrammet &cvs;. Grænseflader på højere niveau er tilgængeligt via programmer såsom <application>Cervisia</application> (<ulink url="http://cervisia.sf.net"> </ulink>) eller <application>TkCVS</application> (<ulink url="http://tkcvs.sf.net"></ulink>). Kun en lille del af &cvs; funktioner, som er vigtige i det daglige arbejde, kan bruges direkte i &tdevelop;. </para>

<para>Grundlæggende kundskab om brug af &CVS; forudsættes. I særdeleshed bør du vide hvordan et givet projekt hentes fra arkivet. Vi anbefaler bogen <citetitle pubwork="book">Open Source Development With CVS</citetitle> af Karl Fogel, som kan distribueres frit (undtagen de ikke-tekniske kapitler). Se <ulink url="http://cvsbook.red-bean.com/cvsbook.html"></ulink>. </para>

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

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

<sect1 id="cvs-commands">
<title>&CVS;-kommandoer i &tdevelop;</title>

<para>Følgende er tilgængeligt i filvisningernes sammenhængsafhængige menuer: </para>

<variablelist>
<varlistentry>
<term>Tilføj til arkivet</term>
<listitem>
<para>Forbereder en fil for at tilføjes til arkivet. Filen overføres til arkivet når du arkiverer den (eller mappen som den findes i) næste gang. </para>
</listitem>
</varlistentry>

<varlistentry>
<term>Fjern fra arkivet</term>
<listitem>
<para>Forbereder en fil for at fjernes fra arkivet. Dette tager også filen væk fra det lokale filsystem, så brug funktionen med forsigtighed! </para>
</listitem>
</varlistentry>

<varlistentry>
<term>Opdatér</term>
<listitem>
<para>Kører kommandoen <command>cvs update</command> for at sammenflette eventuelle ændringer fra andre brugere til din arbejdsmappe. Når du bruger menupunktet for en mappe, sker opdateringen normalt rekursivt, med  mindre om du har lukket for det i indstillingsfilen <filename>.cvsrc</filename>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term>Arkivér</term>
<listitem>
<para>Kører <command>cvs commit</command> for at arkivere alle lokale ændringer i arkivet. Bemærk at du bør opdatere inden du gør dette. Hvis en anden bruger tidligere har arkiveret sine ændringer, kan &CVS; ellers give en fejlmeddelelse. </para>
</listitem>
</varlistentry>
</variablelist>

<para>Alle kommandoer startes som underprocesser af &tdevelop;, uden yderligere kommandolinjeflag eller miljøvariabler. Dette kan være et problem hvis forbindelsen til &CVS;-serveren går via en &ssh;-forbindelse, og kræver at du skriver et kodeord ind hver gang du arkiverer eller opdaterer. Dette er for eksempel nødvendigt hvis projektets vært er <filename>sourceforge.net</filename>. En måde at komme rundt om problemet beskrives i Ofte stiles spørgsmål om CVS/SSH, som du finder i SourceForge-dokumentationen. </para>

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

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

<sect1 id="cvs-behind">
<title>Bagved scenen</title>

<sect2 id="cvs-behind-workdir">
<title>Hvad &CVS; gemmer i arbejdsmappen</title>

<para>(... endnu ikke skrevet ...) </para>
</sect2> <!-- cvs-behind-workdir -->

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

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