<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../../general.ent">
  %general-entities;

  <!ENTITY cvs-download-http "http://ftp.gnu.org/non-gnu/cvs/source/stable/&cvs-version;/cvs-&cvs-version;.tar.bz2">
  <!ENTITY cvs-download-ftp  "ftp://ftp.gnu.org/non-gnu/cvs/source/stable/&cvs-version;/cvs-&cvs-version;.tar.bz2">
  <!ENTITY cvs-md5sum        "0213ea514e231559d6ff8f80a34117f0">
  <!ENTITY cvs-size          "2.9 MB">
  <!ENTITY cvs-buildsize     "32.3 MB">
  <!ENTITY cvs-time          "0.3 SBU (additional ~20 SBU to run the test suite)">
]>

<sect1 id="cvs" xreflabel="CVS-&cvs-version;">
  <?dbhtml filename="cvs.html"?>

  <sect1info>
    <othername>$LastChangedBy$</othername>
    <date>$Date$</date>
  </sect1info>

  <title>CVS-&cvs-version;</title>

  <indexterm zone="cvs">
    <primary sortas="a-CVS">CVS</primary>
  </indexterm>

  <sect2 role="package">
    <title>Introduction to CVS</title>

    <para><application>CVS</application> is the Concurrent Versions System.
    This is a version control system useful for projects using a central
    repository to hold files and then track all changes made to those files.
    These instructions install the client used to manipulate the repository,
    creation of a repository is covered at <xref linkend="cvsserver"/>.</para>

    <bridgehead renderas="sect3">Package Information</bridgehead>
    <itemizedlist spacing="compact">
      <listitem>
        <para>Download (HTTP): <ulink url="&cvs-download-http;"/></para>
      </listitem>
      <listitem>
        <para>Download (FTP): <ulink url="&cvs-download-ftp;"/></para>
      </listitem>
      <listitem>
        <para>Download MD5 sum: &cvs-md5sum;</para>
      </listitem>
      <listitem>
        <para>Download size: &cvs-size;</para>
      </listitem>
      <listitem>
        <para>Estimated disk space required: &cvs-buildsize;</para>
      </listitem>
      <listitem>
        <para>Estimated build time: &cvs-time;</para>
      </listitem>
    </itemizedlist>

    <bridgehead renderas="sect3">Additional Downloads</bridgehead>
    <itemizedlist spacing='compact'>
      <listitem>
        <para>Recommended patch: <ulink
        url="&patch-root;/cvs-&cvs-version;-zlib-1.patch"/></para>
      </listitem>
    </itemizedlist>

    <bridgehead renderas="sect3">CVS Dependencies</bridgehead>

    <bridgehead renderas="sect4">Optional</bridgehead>
    <para role="optional"><xref linkend="gdbm"/>,
    <xref linkend="tcsh"/>,
    <xref linkend="openssh"/>,
    <ulink url="http://www.pdc.kth.se/kth-krb/">krb4</ulink>,
    <xref linkend="mitkrb"/> or <xref linkend="heimdal"/>
    (for the GSSAPI libraries),
    <xref linkend="gs"/> or <xref linkend="espgs"/>, and
    an <xref linkend="server-mail"/> (that provides a
    <command>sendmail</command> command)</para>

    <para><application>CVS</application> will invoke a default text editor to
    create a commit message if the <parameter>-m "Commit message"</parameter>
    parameter was not used when changes are committed to a respository.
    <application>CVS</application> looks for the following text editors, in the
    order shown below, during configuration to determine the default. This
    default can always be overridden by the <envar>CVSEDITOR</envar> or
    <envar>EDITOR</envar> environment variables and can be specified directly
    by passing the <option>--with-editor=<replaceable>&lt;desired text
    editor&gt;</replaceable></option> parameter to the
    <command>configure</command> script.</para>

    <itemizedlist spacing='compact'>
      <listitem>
        <para><xref linkend="vim"/></para>
      </listitem>
      <listitem>
        <para><xref linkend="emacs"/></para>
      </listitem>
      <listitem>
        <para><xref linkend="nano"/></para>
      </listitem>
      <listitem>
        <para><xref linkend="pine"/> (for Pico)</para>
      </listitem>
    </itemizedlist>


    <para condition="html" role="usernotes">User Notes:
    <ulink url="&blfs-wiki;/cvs"/></para>

  </sect2>

  <sect2 role="installation">
    <title>Installation of CVS</title>

    <para>By default <application>CVS</application> is statically linked
    against the <application>Zlib</application> library included in its source
    tree. This makes it exposed to possible security vulnerabilities in that
    library. If you want to modify <application>CVS</application> to use the
    system shared <application>Zlib</application> library, apply the following
    patch:</para>

<screen><userinput>patch -Np1 -i ../cvs-&cvs-version;-zlib-1.patch</userinput></screen>

    <para>Install <application>CVS</application> by running
    the following commands:</para>

<screen><userinput>./configure --prefix=/usr &amp;&amp;
make</userinput></screen>

    <para>If you have <xref linkend="tetex"/> installed and wish to create
    DVI, Postscript, HTML or text docs from the documentation source files,
    issue the following command:</para>

<screen><userinput>make -C doc html txt dvi ps</userinput></screen>

    <para>To test the results, issue: <command>make check</command>. This will
    take quite a while. If you don't have <command>rsh</command> configured for
    access to the host you are building on (or you didn't pass the
    <option>--with-rsh=</option> parameter to the <command>configure</command>
    script, some tests may fail. If you passed the
    <option>--with-rsh=ssh</option> parameter to enable <command>ssh</command>
    as the default remote shell program, you'll need to issue the following
    command so that the tests will complete without any failures:</para>

<screen><userinput>sed -e 's/rsh};/ssh};/' \
    -e 's/g=rw,o=r$/g=r,o=r/' \
    -i src/sanity.sh</userinput></screen>

    <para>Now, as the <systemitem class="username">root</systemitem> user:</para>

<screen role='root'><userinput>make install &amp;&amp;
install -v -m755 -d /usr/share/doc/cvs-&cvs-version; &amp;&amp;
install -v -m644 FAQ README /usr/share/doc/cvs-&cvs-version; &amp;&amp;
install -v -m644 doc/*.pdf /usr/share/doc/cvs-&cvs-version;</userinput></screen>

    <para>If you created any additional documentation, install it by issuing
    the following commands as the
    <systemitem class="username">root</systemitem> user:</para>

<screen role='root'><userinput>install -v -m644 doc/*.{ps,dvi,txt} /usr/share/doc/cvs-&cvs-version; &amp;&amp;
install -v -m755 -d /usr/share/doc/cvs-&cvs-version;/html/cvs{,client} &amp;&amp;
install -v -m644 doc/cvs.html/* \
                 /usr/share/doc/cvs-&cvs-version;/html/cvs &amp;&amp;
install -v -m644 doc/cvsclient.html/* \
                 /usr/share/doc/cvs-&cvs-version;/html/cvsclient</userinput></screen>

  </sect2>

  <sect2 role="configuration">
    <title>Configuring CVS</title>

    <sect3 id="cvs-config">
      <title>Config Files</title>

      <para><filename>~/.cvsrc</filename>, <filename>~/.cvswrappers</filename>,
      and <filename>~/.cvspass</filename>.</para>

      <indexterm zone="cvs cvs-config">
        <primary sortas="e-AA.cvsrc">~/.cvsrc</primary>
      </indexterm>

      <indexterm zone="cvs cvs-config">
        <primary sortas="e-AA.cvswrappers">~/.cvswrappers</primary>
      </indexterm>

      <indexterm zone="cvs cvs-config">
        <primary sortas="e-AA.cvspass">~/.cvspass</primary>
      </indexterm>

    </sect3>

    <sect3>
      <title>Configuration Information</title>

      <para><filename>~/.cvsrc</filename> is the main
      <application>CVS</application> configuration file.
      This file is used by users to specify defaults for different
      <command>cvs</command> commands. For example, to make all
      <command>cvs diff</command> commands run with <option>-u</option>, a user
      would add <option>diff -u</option> to their <filename>.cvsrc</filename>
      file.</para>

      <para><filename>~/.cvswrappers</filename> specifies wrappers to be used in
      addition to those specified in the <filename>CVSROOT/cvswrappers</filename>
      file in the repository.</para>

      <para><filename>~/.cvspass</filename> contains passwords used to complete
      logins to servers.</para>

    </sect3>

  </sect2>

  <sect2 role="content">
    <title>Contents</title>

    <segmentedlist>
      <segtitle>Installed Programs</segtitle>
      <segtitle>Installed Libraries</segtitle>
      <segtitle>Installed Directories</segtitle>

      <seglistitem>
        <seg>cvs, cvsbug, and rcs2log</seg>
        <seg>None</seg>
        <seg>/usr/share/cvs and /usr/share/doc/cvs-&cvs-version;</seg>
      </seglistitem>
    </segmentedlist>

    <variablelist>
      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
      <?dbfo list-presentation="list"?>
      <?dbhtml list-presentation="table"?>

      <varlistentry id="cvs-prog">
        <term><command>cvs</command></term>
        <listitem>
          <para>is the main program file for the concurrent versions system.</para>
          <indexterm zone="cvs cvs-prog">
            <primary sortas="b-cvs">cvs</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="cvsbug">
        <term><command>cvsbug</command></term>
        <listitem>
          <para>is used to send problem reports about <application>CVS</application>
          to a central support site.</para>
          <indexterm zone="cvs cvsbug">
            <primary sortas="b-cvsbug">cvsbug</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="rcs2log">
        <term><command>rcs2log</command></term>
        <listitem>
          <para>is a symlink to the contributed RCS to Change Log
          generator.</para>
          <indexterm zone="cvs rcs2log">
            <primary sortas="b-rcs2log">rcs2log</primary>
          </indexterm>
        </listitem>
      </varlistentry>
    </variablelist>

  </sect2>

</sect1>