diff options
Diffstat (limited to 'common/cvs-it.xml')
-rw-r--r-- | common/cvs-it.xml | 1011 |
1 files changed, 1011 insertions, 0 deletions
diff --git a/common/cvs-it.xml b/common/cvs-it.xml new file mode 100644 index 0000000..37ebb96 --- /dev/null +++ b/common/cvs-it.xml @@ -0,0 +1,1011 @@ +<!-- $Id: --> + +<!-- +<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.2//EN" + "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [ + + <!ENTITY BOILERPLATE "This header makes editing XML easier" > + <!ENTITY FC "Fedora Core" > + <!ENTITY RH "Red Hat" > + +]> +--> + +<chapter id="ch-cvs"> + <title>CVS</title> + <para> + Il Concurrent Versions System (<application>CVS</application>) + fornisce un framework dove molteplici utenti possono editare gli stessi files. + Come puoi immaginare, se un gruppo di utenti edita i files in una singola + directory, il chaos regnerà. Usando <application>CVS</application>, + comunque, un gruppo di persone può lavorare con sicurezza sullo stesso gruppo di files. + <application>CVS</application> mantiene la copia master dei files, + e registra chi ha cambiato cosa e quando in un depositorio centrale. Se + insorgssero dei conflitti, <application>CVS</application> te lo farà sapere. + <application>CVS</application> è spesso usato affinchè i programmatori possano + condividere codice, ma funziona bene anche per la documentazione. + </para> + <indexterm> + <primary>cvs</primary> + </indexterm> + <section id="sn-cvs-overview"> + <title>Come funziona CVS</title> + <indexterm> + <primary>cvs</primary> + <secondary>come funziona</secondary> + </indexterm> + <indexterm> + <primary>cvs</primary> + <secondary>descrizione</secondary> + </indexterm> + <para> + In molti casi, ogni gruppo di files che costituisce un pacchetto o un progetto + è immagazzinato come un <firstterm>module</firstterm> sul CVS server. + </para> + + <para> + Quando lavori con i files dal <application>CVS</application>, dovrai eseguire il + <firstterm>checkout</firstterm> di una copia del modulo sul + file system locale. Dopo aver modificato uno o più files, dovrai inviarli con un + <firstterm>commit</firstterm> al repositorio centrale + <application>CVS</application> server. + </para> + + <para> + Con <application>CVS</application> puoi editare un file senza + prima ottenere il permesso o il locking del file. La parte + <wordasword>concurrent</wordasword> del nome + <application>CVS</application> viene dalla sua capacità di + permettere diverse differenti persone di editare differenti parti dello stesso + file. Siccome nessuno dei cambiamenti si sovrappone, + <application>CVS</application> può registrare correttamente i loro cambiamenti. + In caso di cambiamenti duplicati, questi sono marcati chiaramente nei files + e gli autori devono risolvere il problema da soli. + </para> + + <para> + Quando commetti i cambiamenti, solo i cambiamenti ai files che il server sa + sono commessi. In altre parole, se crei un file nel checkout locale + di un modulo, il nuovo file non è automaticamente + inviato al server. Devi prima <firstterm>add</firstterm> il + file al repositorio quindi eseguire il commit. Se rimuovi un file + dal tuo checkout locale di un modulo, dovrai specificare che vuoi + rimuoverlo dal repositorio sul CVS server e quindi + eseguire il commit della rimozione del file. + </para> + + <para> + I comandi specifici per eseguire queste operazioni sono discussi in + <xref linkend="sn-cvs-cvscommands"></xref>. + </para> + + <para> + Se qualcuno ha modificato il file nel tempo fra intercorso fra l'ultima volta + che l'hai catturato dal CVS e quando hai provato ad eseguire il commit di un cambiamento, + <application>CVS</application> proverà ad incollare i cambiamenti alla + copia master sul <application>CVS</application> server. Se + il contenuto che hai cambiato è in una locazione differente nel file + rispetto la contenuto cambiato da qualcun'altro, l'azione del commit + andrà avanti senza alcun <firstterm>conflitto</firstterm>. + Se qualcuno modifica lo stesso contenuto che hai già cambiato tu + e provi a fare un commit, vedrai un messaggio che è avvenuto + il conflitto su un file. Così, dovrai fare l' + <firstterm>update</firstterm> dei tuoi files di frequente. E' una buona pratica + aggiornarli prima di iniziare a modificarli. + Fa riferimento a <xref linkend="sn-cvs-cvscommands-conflicts"></xref> per + le istruzioni su come risolvere i conflitti. + </para> + </section> + <section id="sn-cvs-preparation"> + <title>Preparazione all'uso di CVS</title> + <indexterm> + <primary>cvs</primary> + <secondary>preparazione all'uso</secondary> + </indexterm> + <para> + Prima di usare <application>CVS</application>, hai bisogno di stabilire + un account con il <application>CVS</application> server. Dopo + aver ottenuto un account, non dovrai più fare nuovamente queste + cose. + </para> + + <section id="sn-cvs-rpm-check"> + <title>E' CVS installato sul tuo sitema</title> + <indexterm> + <primary>cvs</primary> + <secondary>installazione RPM</secondary> + </indexterm> + <para> + Devi aver installato il pacchetto <application>CVS</application> + <abbrev>RPM</abbrev>. Verifica la sua presenza + digitando il comando: + </para> +<screen><prompt>$ </prompt><command>rpm -q cvs</command></screen> + <para> + e vedi un output simile a + <computeroutput>cvs-1.11.19-1</computeroutput>, allora il pacchetto + è installato. Un messaggio simile a <computeroutput>package cvs + is not installed</computeroutput> vuol dire che devi instllare il + pacchetto <application>cvs</application> prima di continuare. Se + non sai come fare, consulta il tuo amministratore di sistema + che potrà intallarlo per te. + </para> + </section> + + <section id="sn-cvs-generate-keys"> + <title>Generazione dell chiavi SSH</title> + <indexterm> + <primary>OpenSSH</primary> + <secondary>chiavi di autorizzazione</secondary> + </indexterm> + <para> + Il <application>CVS</application> server usa chiavi + <application>SSH</application> Protocol 2 per autenticare + gli utenti. Così, devi generare un paio di chiavi prima di richiedere + un account <application>CVS</application>. Se hai già + una chiave <application>SSH</application> <abbrev>DSA</abbrev>, + puoi saltare questo passaggio. + </para> + <tip> + <title>Tip</title> + <para> + Hai già una chiave <abbrev>DSA</abbrev> se hai il + file <filename>~/.ssh/id_dsa.pub</filename> sul sistema. + </para> + <para> + Se la tua chiave <abbrev>DSA</abbrev> esistente non richiede una + <wordasword>passphrase</wordasword>, sei fortemente incoraggiato a + generrne una che richieda una passphrase. + </para> + </tip> + <para> + Usa i seguenti passi per generare una chiave <abbrev>DSA</abbrev> + usata da <application>SSH</application> Protocol 2. E' + necessaria per un account <application>CVS</application> su + <computeroutput>cvs.fedora.redhat.com</computeroutput>. + </para> + <orderedlist> + <indexterm> + <primary>OpenSSH</primary> + <secondary><command>ssh-keygen</command> + </secondary> + </indexterm> + <indexterm> + <primary><command>ssh-keygen</command> + </primary> + </indexterm> + <listitem> + <para> + Per generare una chiave + <acronym>DSA</acronym> + per funzionare con il protocollo versione 2.0, allo shell prompt, + digita il comando: + </para> +<screen><prompt>$ </prompt><command>ssh-keygen -t dsa</command></screen> + <para> + Accetta la posizione predefinita per la locazione del file + <filename>~/.ssh/id_dsa</filename>. Sei fortemente incoraggiato all'urgenza + di definire ed usare una <firstterm>passphrase</firstterm> per + aumentare la sicurezza della tua chiave. Immetti una passphrase + differente dalla password del tuo password e confermala + reinserendola nuovamente. + </para> + </listitem> + <listitem> + <para> + Copia la nuova chiave nel file corretto digitando i + seguenti comandi allo shell prompt. + </para> +<screen><prompt>$ </prompt><command>cat ~/.ssh/id_dsa.pub>>~/.ssh/authorized_keys</command></screen> + <note> + <para> + Controlla con attenzione questo comando prima di premere il tasto + <guibutton>ENTER</guibutton>. + Se <filename>~/.ssh/authorized_keys</filename> + esiste già, i contenuti di + <filename>~/.ssh/id_dsa.pub</filename> verranno appesi alla + fine del file <filename>~/.ssh/authorized_keys</filename>. + </para> + </note> + </listitem> + <listitem> + <para> + Cambia i permessi della tua directory <filename>~/.ssh</filename> + e delle tue chiavi con i comandi: + </para> +<screen><prompt>$ </prompt><command>chmod 755 ~/.ssh</command> +<prompt>$ </prompt><command>chmod 644 ~/.ssh/authorized_keys</command></screen> + </listitem> + </orderedlist> + <tip> + <title>Tip</title> + <para> + Puoi far si che il sistema ricordi la passphrase così da + non doverla digitare ogni volta che accedi al + <application>CVS</application> server. Fa riferimento alla + documentazione del programma <application>ssh-add</application>. + </para> + </tip> + </section> + </section> + <section id="sn-cvs-config"> + <title>Configurazione per l'accesso CVS</title> + <indexterm> + <primary>cvs</primary> + <secondary>configurazione per l'accesso</secondary> + </indexterm> + <indexterm> + <primary>cvs</primary> + <secondary>CVSROOT</secondary> + </indexterm> + <indexterm> + <primary>cvs</primary> + <secondary>CVS_RSH</secondary> + </indexterm> + <indexterm> + <primary>CVSROOT</primary> + </indexterm> + <indexterm> + <primary>CVS_RSH</primary> + </indexterm> + <indexterm> + <primary>cvs</primary> + <secondary><filename>.cvsrc</filename> + </secondary> + </indexterm> + <indexterm> + <primary><filename>.cvsrc</filename> + </primary> + </indexterm> + <section id="sn-cvs-config-cvsrc"> + <title>Evitare digitazioni ripetitive</title> + <indexterm> + <primary>cvs</primary> + <secondary>evitare digitazioni ripetitive</secondary> + </indexterm> + <para> + Molti comandi <application>CVS</application> hanno bisogno di + certe opzioni per operare in modo consistente. Invece di + digitarle ogni volta che il comando è usato, puoi salvare gli + switches in un file che <application>CVS</application> leggerà + prima di eseguire la linea di comando. + </para> + + <para> + Crea un file chiamato <filename>~/.cvsrc</filename> nella tua home + directory. Dovrà contenere i seguenti comandi, uno per + riga: +<screen><computeroutput>cvs -z3 +diff -uNp +rdiff -uNp +update -dP</computeroutput></screen> + </para> + </section> + + <section id="sn-cvs-config-anon"> + <title>Configurare un accesso CVS Read-Only</title> + <indexterm> + <primary>cvs</primary> + <secondary>configurare un accesso Read-Only</secondary> + </indexterm> + <indexterm> + <primary>cvs</primary> + <secondary>accesso anonimo</secondary> + </indexterm> + <para> + If your goal is to download the various &FC; documents and to + render them on your system, you only need read-only access to + the <application>CVS</application> repository. Follow the + instructions in this section and then skip directly to + <xref linkend="sn-cvs-cvscommands-co"/>. + </para> + + <para> + Change directories to where you want your files from + <application>CVS</application> to be located, and execute the + following commands: + </para> +<screen><prompt>$ </prompt><command>export CVSROOT=:pserver:cvs.fedora.redhat.com:/cvs/docs</command> +<prompt>$ </prompt><command>cvs login</command> +<prompt>$ </prompt><command>cvs checkout docs-common</command> <replaceable>module-name</replaceable> +<prompt>$ </prompt><command>cvs checkout</command> <replaceable>module-name</replaceable> +<prompt>$ </prompt><command>cd</command> <replaceable>module-name</replaceable></screen> + <para> + Once you have checked the module out, it doesn't matter what + your + <envar>CVSROOT</envar> + is set to because it is stored in the file + <filename>CVS/Root</filename> for each directory in your local + repository. As long as your current working directory has a + <filename>CVS/</filename> directory, the + <application>CVS</application> program will automatically locate + the &FC; repository. + </para> + </section> + + <section id="sn-cvs-config-author"> + <title>Configuring Read/Write CVS Access</title> + <indexterm> + <primary>cvs</primary> + <secondary>configuring read/write access</secondary> + </indexterm> + <indexterm> + <primary>cvs</primary> + <secondary>configuring access for authors</secondary> + </indexterm> + <para> + To author a new document or to change an existing one, you must + obtain full read/write access to the &FC; Docs + <application>CVS</application> repository. For the full details + on this process, refer to the + <ulink url="http://fedoraproject.org/wiki/DocsProject/NewWriters"><filename>http://fedoraproject.org/wiki/DocsProject/NewWriters</filename> + </ulink> web site. Below is a summary: + </para> + + <itemizedlist> + <listitem> + <para> + Subscribe to the + <ulink url="https://listman.redhat.com/mailman/listinfo/fedora-docs-list"><filename>fedora-docs-list</filename> + </ulink>, which is the main forum for the project. + </para> + </listitem> + <listitem> + <para> + Generate a GNU Privacy Guard (<abbrev>GPG</abbrev>) key to + identify yourself to the project. + </para> + </listitem> + <listitem> + <para> + Register for a + <ulink url="http://bugzilla.redhat.com/"><filename>Bugzilla</filename> + </ulink> account, if you do not have one already. + <filename>Bugzilla</filename> is how we keep track of bugs, + changes and projects. + </para> + </listitem> + <listitem> + <para> + Post a + <ulink url="http://fedoraproject.org/wiki/DocsProject_2fSelfIntroduction">self + introduction</ulink> to the list. + </para> + </listitem> + </itemizedlist> + + <para> + After your + <ulink url="http://fedoraproject.org/wiki/DocsProject_2fSelfIntroduction">self + introduction</ulink> has been approved your + <application>CVS</application> access will be granted. + </para> + + <para> + Every author, and that includes you once your self introduction + has been received, has a unique + <envar>$CVSROOT</envar> + to access the <application>CVS</application> repository: + </para> +<screen><prompt>$ </prompt><command>export CVSROOT=:ext:</command><replaceable>yourname</replaceable><command>@cvs.fedora.redhat.com:/cvs/docs</command> +<prompt>$ </prompt><command>export CVS_RSH=/usr/bin/ssh</command></screen> + <para> + With the + <envar>$CVSROOT</envar> + and + <envar>$CVS_RSH</envar> + environment variables in place, you can access the repository: + </para> +<screen><prompt>$ </prompt><command>cvs co -c</command></screen> + <para> + You will be asked for the passphrase for your + <application>SSH</application> key. Press + <guibutton>ENTER</guibutton> + and you should receive a list of modules already in the + repository. + </para> + </section> + </section> + <section id="sn-cvs-cvscommands"> + <title>Basic CVS Commands</title> + <indexterm> + <primary>cvs</primary> + <secondary>commands</secondary> + </indexterm> + <para> + After configuring your system to work with CVS, checkout the + modules you will be working on. + </para> + <tip> + <title>Tip</title> + <para> + To see if you need a correctly-set + <envar>$CVSROOT</envar> + variable, or the <option>-m </option> + <replaceable>repository</replaceable> command line switch, see + if you have a <filename>CVS/</filename> subdirectory in your + working directory. + </para> + <para> + If you have a <filename>CVS/</filename> directory, + <application>CVS</application> ignores any + <envar>$CVSROOT</envar> + or <option>-m</option> command line switch. + </para> + </tip> + <section id="sn-cvs-cvscommands-co"> + <title>Checking Out Modules</title> + <indexterm> + <primary>cvs</primary> + <secondary>checking out modules</secondary> + </indexterm> + <para> + You only need to checkout a module once. After a local copy of + the module is on your system, it is on your system. + </para> + + <para> + To checkout a module, use the following command: + </para> +<screen><prompt>$ </prompt><command>cvs co</command> <replaceable><module-name></replaceable></screen> + <para> + For example, to checkout the + <computeroutput>example-tutorial</computeroutput> module, change + to your work directory, and execute the following command: + </para> +<screen><prompt>$ </prompt><command>cvs co example-tutorial</command></screen> + <para> + A directory called <filename>example-tutorial/</filename> is + created in the current directory. + </para> + + <para> + If a branch name is not specified when checking out a module, it + is referred to as the <firstterm>HEAD</firstterm> of the + <application>CVS</application> module. + </para> + + <section id="sn-cvs-cvscommands-co-branch"> + <title>Checking Out Branches of Modules</title> + <indexterm> + <primary>cvs</primary> + <secondary>check out modules</secondary> + <tertiary>checking out branches</tertiary> + </indexterm> + <para> + Think of a <application>CVS</application> branch as a version + of the files for a particular version of a manual or package. + </para> + + <para> + To checkout a branch of a module, use the following command: + </para> +<screen><prompt>$ </prompt><command>cvs co</command> <option>-d</option> <replaceable><directory></replaceable> <option>-r</option> <replaceable><branchname></replaceable> <replaceable><module-name></replaceable></screen> + <para> + A directory named <replaceable><directory></replaceable> + is created, and the files for the + <replaceable><branchname></replaceable> branch of the + <replaceable><module-name></replaceable> module are + copied in the directory. + </para> + + <para> + For example, to checkout a branch named BRANCH-VERSION-1.2 + from the <computeroutput>mymodule</computeroutput> module, use + the command: + </para> +<screen><prompt>$ </prompt><command>cvs co -d mymodule-1.2 -r BRANCH-VERSION-1.2 mymodule</command></screen> + <para> + The BRANCH-VERSION-1.2 branch of the module is checked out in + the <filename>mymodule-1.2</filename> directory on your + system. + </para> + + <para> + To determine which branches and tags exist for a file, use the + command: + </para> +<screen><prompt>$ </prompt><command>cvs status</command> <option>-v</option> <replaceable><filename></replaceable></screen> + <para> + For example, the status of the file + <filename>foo.sgml</filename> is as follows: + </para> +<screen> +<computeroutput> +=================================================================== +File: foo.sgml Status: Up-to-date + + Working revision: 1.47 + Repository revision: 1.47 /cvs/docs/custom-guide/rhl-cg-en.sgml,v + Sticky Tag: (none) + Sticky Date: (none) + Sticky Options: (none) + + Existing Tags: + BRANCH-VERSION-1.2 (branch: 1.25.2) +</computeroutput> +</screen> + <para> + Only tags marked as branches in the second column under the + <computeroutput>Existing Tags</computeroutput> section can be + checked out as a branch. + </para> + </section> + </section> + + <section id="sn-cvs-cvscommands-up"> + <title>Updating Files</title> + <indexterm> + <primary>cvs</primary> + <secondary>updating files</secondary> + </indexterm> + <para> + To retrieve the latest versions of the files in a module, change + to the directory that contains the files for the module and + execute the command: + </para> +<screen><command>cvs update</command></screen> + <para> + The latest versions of all the files in the module are + downloaded into your local copy. If you notice a file conflict, + refer to <xref linkend="sn-cvs-cvscommands-conflicts"></xref>. + </para> + </section> + + <section id="sn-cvs-cvscommands-commit"> + <title>Committing Files</title> + <indexterm> + <primary>cvs</primary> + <secondary>committing files</secondary> + </indexterm> + <para> + After modifying files in your local version of a module, commit + them to save the changes on the <application>CVS</application> + server: + </para> +<screen><prompt>$ </prompt><command>cvs commit</command> <option>-m</option> "<replaceable>some log message</replaceable>" <replaceable>filename</replaceable></screen> + <note> + <para> + If you would prefer to write your log message with your + favorite text editor, as defined by the $VISUAL or the $EDITOR + environment variable, just omit the <userinput>-m "some + log message"</userinput>. The buffer will already contain + comments describing the change; you do not need to delete them + as you enter your own text. + </para> + </note> + + <para> + The log message should be as descriptive as possible so that you + and anyone else working on the module understands what changed. + Using a log message such as <userinput>updated some + files</userinput> does not accurately describe what has changed + and will not help you in the future. If you are correcting a + bug, use the <application>Bugzilla</application> reference. + </para> + + <para> + The <replaceable><filename></replaceable> can be one + filename, a series of filenames separated by spaces, or a group + of filenames specified using wildcards such as + <filename>*.png</filename> or <filename>foo-*.sgml</filename>. + </para> + + <para> + If no filename or group of filenames is specified in the + <command>commit</command> command, all outstanding changes of + any kind are committed to the server. The command is recursive + and will include changes in any subdirectories of the module. + Use caution when issuing the <command>commit</command> command + without any filenames because you might not remember exactly + what files changed. + </para> + + <para> + If you notice a file conflict, refer to + <xref linkend="sn-cvs-cvscommands-conflicts"></xref>. + </para> + </section> + + <section id="sn-cvs-cvscommands-add"> + <title>Adding Files</title> + <indexterm> + <primary>cvs</primary> + <secondary>adding files</secondary> + </indexterm> + <para> + To add a file to a module, create the file in your local copy + then execute the following command: + </para> +<screen><prompt>$ </prompt><command>cvs add</command> <replaceable>file-to-add</replaceable></screen> + <para> + After adding the file, you must <command>commit</command> the + <command>add</command> to copy it to the server: + </para> +<screen><prompt>$ </prompt><command>cvs commit</command> <option>-m</option> "<replaceable>some log message</replaceable>" <replaceable>file-to-add</replaceable></screen> + </section> + + <section id="sn-cvs-cvscommands-admin"> + <title>Managing Binary Files</title> + <indexterm> + <primary>cvs</primary> + <secondary>binary files</secondary> + </indexterm> + <para> + The most commonly-archived files are simple text files but + sometimes binary files are also archived. The + <application>cvs</application> program recognizes most common + filename extentions such as <filename>.png</filename> or + <filename>.jpg</filename>, so <application>cvs</application> + usually "does the right thing". + </para> + + <para> + When a copy of a file is checked out of the repository, + <application>cvs</application> scans it for special keywords, + such as "<computeroutput>$id:$</computeroutput>" and + replaces the string with a generated value, such as the file + version number. + </para> + + <para> + This keyword substitution usually corrupts binary files, so it + must be turned off if <application>cvs</application> does not + recognize your file as binary. To mark your file as being + binary, and thus needing the keyword expansion turned off, use + the command: + </para> +<screen width="60"><prompt>$ </prompt><command>cvs</command> <option>admin</option> <option>-kk</option> <replaceable>filename</replaceable></screen> + <para> + Note that the file must already be checked in to the + <abbrev>CVS</abbrev> repository before the + <option>admin</option> command can be used. This is OK, since + the keyword expansion is done as the file is checked out and + copied to the local directory, not when the file is committed to + the repository. + </para> + <tip> + <title>Recovering a binary file</title> + <para> + If you check a binary file into the repository and then find + it corrupted when it is checked out, do not panic. Simply use + the <option>admin</option> command as described above, delete + your local file copy, and check it out again. + </para> + </tip> + </section> + + <section id="sn-cvs-cvscommands-rm"> + <title>Removing Files</title> + <indexterm> + <primary>cvs</primary> + <secondary>removing files</secondary> + </indexterm> + <para> + If a file is no longer needed in the module, use the + <command>remove</command> command to remove it from your local + copy and then <command>commit</command> the removal to the + server. Even though the file is removed from current version of + the module, an archived copy is still kept on the server and can + be retrieved at any time with the <command>add</command> + command. + </para> +<screen><prompt>$ </prompt><command>cvs rm -f</command> <replaceable>file-to-remove</replaceable></screen> + <para> + After removing the file, you must <command>commit</command> the + removal: + </para> +<screen><prompt>$ </prompt><command>cvs commit</command> <option>-m</option>"<replaceable>some log message</replaceable>" <replaceable>file-to-remove</replaceable></screen> + <para> + You can not use wildcards in the <command>commit</command> + command to identify removed files. They must be specified with a + exact filename. + </para> + + <para> + If you need to rename a file, it is best to rename the file on + the <application>CVS</application> server so that the history of + the file is preserved. If you need to rename a file, send an + email to + <ulink url="mailto:cvsdocs-administrator@fedora.redhat.com"><filename>cvsdocs-administrator@fedora.redhat.com</filename> + </ulink> asking to have the file renamed. + </para> + </section> + + <section id="sn-cvs-cvscommands-status"> + <title>Status of Files</title> + <indexterm> + <primary>cvs</primary> + <secondary>status of files</secondary> + </indexterm> + <para> + Sometimes it is necessary to view the + <firstterm>status</firstterm> of a file in a + <application>CVS</application> module. To view the status of a + file, use the command: + </para> +<screen><prompt>$ </prompt><command>cvs status</command> <replaceable>filename</replaceable></screen> + <para> + The status report of a repository file is as follows: + </para> + + <variablelist> + <varlistentry> + <term><computeroutput>Up-to-date</computeroutput></term> + <listitem> + <para> + Your revision of the file is identical to the latest + revision on the <application>CVS</application> server. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><computeroutput>Locally Modified</computeroutput></term> + <listitem> + <para> + You have updated to the latest revision from the server, + but then you modified the file on your system. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><computeroutput>Locally Added</computeroutput></term> + <listitem> + <para> + You added the file with the <command>cvs add</command> + command but have not yet committed the addition of the + file. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><computeroutput>Locally Removed</computeroutput></term> + <listitem> + <para> + You removed the file with the <command>cvs + remove</command> command but have not yet committed the + removal. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><computeroutput>Needs Checkout</computeroutput></term> + <listitem> + <para> + A newer version of the file is on the server and needs to + be retrieved. Even though the status includes the word + checkout, it really means that you need to update your + files with the <command>cvs update</command> command. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><computeroutput>Needs Patch</computeroutput></term> + <listitem> + <para> + The revision in your local checkout needs a patch to be + the latest revision from the server. Issue the + <command>cvs update</command> command to resolve. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><computeroutput>Needs Merge</computeroutput></term> + <listitem> + <para> + A newer revision exists on the server and your local + version contains modification not yet committed. This + status usually occurs if you don't have the latest + revision of the file and edit it anyway. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><computeroutput>File had conflicts on merge</computeroutput></term> + <listitem> + <para> + Similar to <computeroutput>Needs Merge</computeroutput>, + except when you tried to issue the <command>cvs + update</command> command, the differences could not be + resolved automatically. Refer to + <xref linkend="sn-cvs-cvscommands-conflicts"></xref> for + more information on resolving conflicts. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><computeroutput>Unknown</computeroutput></term> + <listitem> + <para> + The <application>CVS</application> server does not know + anything about this file. It has neither been added nor + removed locally and has never been committed to the + server. This status usually occurs for files you should + not commit to <application>CVS</application> such as + <filename>generated-index.sgml</filename> or for files + that you want to add to the repository but have not yet + issued the <command>cvs add</command> command. + </para> + </listitem> + </varlistentry> + </variablelist> + </section> + + <section id="sn-cvs-cvscommands-conflicts"> + <title>Resolving Conflicts</title> + <indexterm> + <primary>cvs</primary> + <secondary>resolving conflicts</secondary> + </indexterm> + <para> + If you modify a file and the same region is modified by someone + else and committed first, you will probably see a message + similar to the following when committing the file or updating + your local copy of the module: + </para> +<screen> +<computeroutput> +RCS file: /cvs/docs/module-name/filename.sgml,v +retrieving revision 1.12 +retrieving revision 1.13 +Merging differences between 1.12 and 1.13 into filename.sgml +rcsmerge: warning: conflicts during merge +cvs server: conflicts found in filename.sgml +C filename.sgml +</computeroutput> +</screen> + <para> + To resolve the conflict, open the file, search for + <computeroutput><<<<<<<</computeroutput> + and determine which version of the content is correct. For + example: + </para> +<screen> +<computeroutput> +<para> +Some sentence. +<<<<<<< filename.sgml +A sentence that was changed in the working copy. +======= +A same sentence that was changed differently and committed. +>>>>>>> 1.13 +</para> +</computeroutput> +</screen> + <para> + The content between the + <computeroutput><<<<<<<</computeroutput>, + and the <computeroutput>=======</computeroutput> is the content + from your working copy. The content between the + <computeroutput>=======</computeroutput> and the + <computeroutput>>>>>>>></computeroutput> is + the content from the server. + </para> + + <para> + Resolve the conflict by editing your copy, and commit the file. + </para> + </section> + + <section id="sn-cvs-cvscommands-summary"> + <title>Summary</title> + <indexterm> + <primary>cvs</primary> + <secondary>commands</secondary> + <tertiary>summary of</tertiary> + </indexterm> + <para> + All commands assume you are in the proper directory for the + <application>CVS</application> module. + </para> + <table frame="all" id="tb-cvs-basic-commands"> + <title>Basic CVS Commands</title> + <tgroup cols="2"> + <colspec colnum="1" colname="shortcut" colwidth="30"/> + <colspec colnum="2" colname="description" colwidth="60"/> + <thead> + <row> + <entry>Command</entry> + <entry>Description</entry> + </row> + </thead> + <tbody> + <row> + <entry><command>cvs checkout + <replaceable><module-name></replaceable></command> + or <command>cvs co <replaceable><module-name></replaceable></command> + </entry> + <entry>Creates a directory called + <replaceable><module-name></replaceable> with the contents of the + module in the directory</entry> + </row> + <row> + <entry><command>cvs co -d <replaceable><directory></replaceable> -r <replaceable><branchname></replaceable><replaceable><module-name></replaceable></command> + </entry> + <entry>Creates the <replaceable><directory></replaceable> directory + with the contents of the <replaceable><branchname></replaceable> + branch of the <replaceable><module-name></replaceable> module</entry> + </row> + <row> + <entry><command>cvs update</command> or <command>cvs up</command> + </entry> + <entry>Update your files with the latest files from the CVS server</entry> + </row> + <row> + <entry><command>cvs add <replaceable><filename></replaceable></command> + </entry> + <entry>Add a new file "filename" to the CVS server</entry> + </row> + <row> + <entry><command>cvs commit -m "My message" + <replaceable><filename></replaceable></command> + </entry> + <entry>Update file <replaceable><filename></replaceable> with the + latest copy from your computer</entry> + </row> + <row> + <entry><command>cvs log <replaceable><filename></replaceable></command> + </entry> + <entry>View the commit messages for the file <replaceable><filename></replaceable> + </entry> + </row> + <row> + <entry><command>cvs status <replaceable><filename></replaceable></command> + </entry> + <entry>View status of the file, such as <computeroutput>Locally + Modified</computeroutput> + </entry> + </row> + <row> + <entry><command>cvs status -v <replaceable><filename></replaceable></command> + </entry> + <entry>View existing tags and branches for file</entry> + </row> + <row> + <entry><command>cvs diff <replaceable><filename></replaceable></command> + </entry> + <entry>Show diff of the working copy of the file and the latest + version of the file for the branch</entry> + </row> + <row> + <entry><command>cvs diff -r1.1 -r1.2 <replaceable><filename></replaceable></command> + </entry> + <entry>Show diff of version 1.1 and 1.2 for file</entry> + </row> + </tbody> + </tgroup> + </table> + <para> + For more information, read the CVS manual available on your + system at + <filename>/usr/share/doc/cvs-<replaceable><version-number></replaceable>/cvs.ps</filename> + (the CVS version might vary) and visit the CVS webpage available + at + <ulink url="http://www.cvshome.org/">http://www.cvshome.org/</ulink>. + </para> + <tip> + <title>Tip</title> + <para> + Since <application>CVS</application> is using + <application>ssh</application> to connect to the + <application>CVS</application> server, you will be prompted + your password before performing your + <application>CVS</application> request. If you want to + configure your machine so that you do not have to enter a + password, refer to the + <ulink url="http://redhat.com/docs/manuals/linux/RHL-9-Manual/custom-guide/s1-openssh-client-config.html"><citetitle>&RH; + Linux 9 Customization Guide</citetitle> </ulink> for details + about using <command>ssh-agent</command>. + </para> + </tip> + </section> + </section> +</chapter> |