<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
<style type="text/css">
/* <![CDATA[ */ @import "/branding/css/tigris.css"; /* ]]> */
</style>
  <script src="/branding/scripts/sc.js" type="text/javascript"></script>
  <link rel="stylesheet" type="text/css" href="/branding/css/print.css" media="print" />

  <title>Using command-line cvs</title>
 </head>

 <body class="docs" onload="self.focus()">
  <div class="docs" id="ddusingcvscommandline">
   <h2>Using command-line CVS to access project source files</h2>

   <div id="toc">
    <ul>
     <li><strong><a href="/nonav/servlets/HelpTOC">Help index</a></strong></li>
    </ul>

    <ul>
     <li>
      <a href="/nonav/docs/ddCVS.html">About source code version control with CVS</a> 

      <ul>
       <li><a href="/nonav/docs/ddCVS_cvsglossary.html">A version control glossary</a></li>

       <li>
        Using command-line CVS to access project source files 

        <ul>
         <li><a href="#cvsintro">Getting started with CVS</a></li>

         <li><a href="#accesscvs">Accessing a project's CVS repository</a></li>

         <li><a href="#gettingsource">Getting the source code</a></li>

         <li><a href="#cvslog">Viewing file revision history</a></li>
        </ul>
       </li>

       <li><a href="/nonav/docs/ddCVS_cvscontributing.html">Contributing source code changes with CVS</a></li>

       <li><a href="/nonav/docs/ddCVS_cvsmanaging.html">Managing project files and directories with CVS</a></li>
      </ul>
     </li>
    </ul>
   </div>

   <h3><a id="cvsintro" name="cvsintro">Getting started with CVS</a></h3>

   <p>If you are participating in a development project on this site, you must use CVS as the versioning control tool for project source files. This the first in a series of three tool documents covering information and commands pertinent to using CVS.</p>

   <h3><a id="accesscvs" name="accesscvs">Accessing a project's CVS repository</a></h3>

   <p>If you do have cvs login access for a project hosted on this site, first you must set the cvsroot to access the project's source code repository. In your shell or terminal client, type:</p>

   <p><code>:pserver:yourlogin@cvs.projectname.domain.com:/home/main_cvs_dir</code></p>

   <p>substituting your login and project information.</p>

   <p>If you are only working on one project at a time, you only have to set cvsroot the first time you log in to CVS.</p>

   <p>If you are participating in more than one project and need to access CVS repositories located on different servers, you need to set the cvsroot for each login session access the correct project's source repository.</p>

   <p>If you do not have a specific cvs login but wish to look at an open source project's source repository, you may still be able to log in to cvs as "anonymous" by typing:</p>

   <p><code>:pserver:anoncvs@cvs.projectname.domain.com:/home/main_cvs_dir</code></p>

   <ul>
    <li><a href="http://cvsbook.red-bean.com/cvsbook.html#Accessing_A_Repository">More about accessing a CVS repository</a></li>
   </ul>

   <p>To log in to CVS, use the following command:</p>

   <p><code>cvs login</code></p>

   <p>Enter your user password when prompted. This should be the same password associated with your user account on this site.</p>

   <h3><a id="gettingsource" name="gettingsource">Getting source files</a></h3>

   <p>To get a "working copy" of the latest source files, you must check out the source files, a process which copies the files onto your system. First create a directory on your local machine by typing:</p>
<pre>
   <code>mkdir my_working_dir (the directory name of your choosing)
   cd my_working_dir</code>
 
</pre>

   <p>Then, to check out or copy source file from the repository into your newly created local directory, type:</p>

   <p><code>cvs checkout project_name</code></p>

   <p>This top-level module would contain the entire source code tree (that is, the top level directory and any subdirectories) for that part of the project. There is a fairly common module structure for project CVS repositories initially. As the project grows, the project's source "tree" also grows as subdirectories are added to various modules.</p>

   <p>To obtain the source code for a particular module called "module-name" within the project named "project_name", specify:</p>

   <p><code>cvs checkout module_name/project_name</code></p>

   <p><a href="http://cvsbook.red-bean.com/cvsbook.html#Checking_Out_A_Working_Copy">More about checking out a working copy of project files</a></p>

   <h3><a id="cvslog" name="cvslog">Viewing file revision history</a></h3>

   <p>Anyone with cvs read permission can view individual file histories to track revision information by typing:</p>

   <p><code>cvs log filename</code></p>

   <p>The result is a display of the file's revision information, starting with the most current revision, and includes such information as the log message, status, working revision number, and repository revision number.</p>

   <ul>
    <li><a href="http://cvsbook.red-bean.com/cvsbook.html#Revision_Numbers">More about file revision numbers</a></li>
   </ul>

   <p><a id="cvsdiff" name="cvsdiff"><span class="HelpTextHeader">Comparing file revisions</span></a></p>


  <p>To see the particulars of a file's modifications between two revisions, after obtaining file revision numbering information from the "<b>cvs log</b>" command's output, type:</p>

  <p><code>cvs diff -r revision_# -r revision_#</code></p>

  <p>The entire file contents display with lines from both versions where differences occur marked by revision number.</p>

  <ul>
   <li><a href="http://cvsbook.red-bean.com/cvsbook.html#Finding_Out_What_You__And_Others__Did_--_update_And_diff">Finding out what you and others did</a></li>

   <li><a href="http://cvsbook.red-bean.com/cvsbook.html#diff">More about diffs and options</a></li>

   <li><a href="/nonav/docs/ddCVS_cvscontributing.html">More CVS help: Contributing your changes</a></li>
  </ul>
  </div>
  <div class="courtesylinks">
   <p><a href="#toc">Top</a> | <a href="/nonav/servlets/HelpTOC">Help index</a></p>
  </div>
 </body>
</html>


