<!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>Checking files in and out</title>
 </head>

 <body class="docs" onload="self.focus()">
  <div class="docs" id="ddusingwincvs01">
   <h2>Checking files in and out of WinCvs</h2>

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

    <ul>
     <li><a href="/nonav/docs/ddUsingWinCvs.html">Setting up WinCvs</a></li>

     <li>
      Checking source files in and out of WinCvs 

      <ul>
       <li><a href="#checkingout">Checking out source files</a></li>

       <li><a href="#cvsadd">Adding/committing files</a></li>

       <li><a href="#cvsupdate">Updating/merging files</a></li>
      </ul>
     </li>

     <li><a href="/nonav/docs/ddUsingWinCvs-02.html">Managing files in WinCvs</a></li>
    </ul>
   </div>

   <h3><a id="checkingout" name="checkingout">Checking out Source Files</a></h3>

   <p>Before you can make changes to source files, you must <i>check out</i> (make a copy on your local hard disk) the project or "module" files you want. A module is a subset of the entire project file repository.</p>

   <p>Log in to the project's CVS server and provide your password. Then select <strong>Checkout module...</strong> from the <strong>Create</strong> menu to retrieve the latest versions of files. You will need to define the module you wish to check out and the directory where you want the checked out files to reside on you local drive.</p>

   <p><a href="http://www.wincvs.org/winhtml/wincvs11.htm#_Toc453646179">More about logging in to the project server</a><br />
    <a href="http://www.wincvs.org/winhtml/wincvs11.htm#_Toc453646180">More about checking out source files</a></p>

   <h3><a id="cvsupdate" name="cvsupdate">Updating/Merging Files</a></h3>

   <p>You should always update your working copy of the project repository before you commit your changes. This ensures that you are making changes to the most recent versions of files. Updating will not overwrite your modifications if another developer has made changes to the same file(s). Instead, WinCvs attempts to merge the two versions.</p>

   <p>To update, select the file(s) or folder(s) you wish to update and select <strong>Update files...</strong> on the <strong>Modify</strong> menu.</p>

   <ul>
    <li><a href="http://www.wincvs.org/winhtml/wincvs11.htm#_Toc453646181">More about updating</a></li>

    <li><a href="http://www.wincvs.org/winhtml/wincvs11.htm#_Toc453646192">More about merging</a></li>
   </ul>

   <p>For information on file statuses and comparing files, see <a href="/nonav/docs/ddUsingWinCvs-02.html">Managing files in WinCvs</a>.</p>

   <h3><a id="cvsadd" name="cvsadd">Adding/Committing Files</a></h3>

   <p>WinCvs is not a file editor. You can use the file editor of choice on your local machine to modify project files you have checked out. When you have completed your changes to files on your hard drive, you can <i>commit</i> those changes back into the project's CVS repository.</p>

   <p>Whenever you <i>create</i> a new file on your hard disk and you want to add that file to the project, an "unknown file" icon <img alt="" src="images/wincvs_unknown_icon.gif" height="15" width="13" /> will appear next to your new files.</p>

   <p>Select the new file and click the "Add Selected" <img alt="" src="images/wincvs_addselected.gif" height="15" width="13" /> or "Add Selected Binary" <img alt="" src="images/wincvs_addbinary.gif" height="15" width="13" /> button in the toolbar to mark the file as under version control.</p>

   <ul>
    <li>Use "<strong>Add Selected</strong> " for text files (e.g., *.txt or *.html).</li>

    <li>Use "<strong>Add Selected Binary</strong>" for files that have non-text formats (e.g., application data files or graphics).</li>
   </ul>

   <p><strong>Note:</strong> Adding the file <i>does not</i> put it into the project's CVS repository. You must then commit it.</p>

   <p>Files that still need to be committed display a red icon <img alt="" src="images/wincvs_modified_icon.gif" height="15" width="13" /> next to them. To commit these files:</p>

   <ol>
    <li>Select the entire directory in the left-hand pane, or select only those individual files to be committed.</li>

    <li>Click the commit icon <img alt="" src="images/wincvs_commit_icon.gif" height="25" width="23" /> in the tool bar. You are prompted for a log message.</li>

    <li>Enter a brief description of the changes made to each file.</li>
   </ol>

   <p>The results of the committing a file are displayed in the lower pane. If problems or <i>conflicts</i> are encountered during the merge, WinCvs aborts the commit process. You must then open the file in your file editor, resolve the conflicts, save it again, and then commit. <!--For more about resolving conflicts, see [LINK].--></p>

   <ul>
    <li><a href="http://www.wincvs.org/winhtml/wincvs11.htm#_Toc453646186">More about adding files</a></li>

    <li><a href="http://www.wincvs.org/winhtml/wincvs11.htm#_Toc453646185">More about committing files</a></li>
   </ul>

   <div class="courtesylinks">
    <p><a href="#toc">Top</a> | <a href="/nonav/servlets/HelpTOC">Help index</a></p>
   </div>
  </div>
 </body>
</html>


