<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
  <meta content="application/xhtml+xml; charset=utf-8"
 http-equiv="content-type" />
  <meta content="haran" name="author" />
  <meta content="Windows Notepad" name="generator" />
  <link type="text/css" href="http://dev.eclipse.org/default_style.css"
 rel="stylesheet" />
  <link title="Grey boxes stylesheet"
 href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-vcm-home/layout.css"
 type="text/css" rel="stylesheet" />
  <link
 href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-vcm-home/colors.css"
 type="text/css" rel="stylesheet" />
  <title>Eclipse Platform - CVS FAQ</title>
</head>
<body>
 <p>Back to <a href="../archivedReleases.php">Archived Releases</a></p>   
<table width="100%" cellpadding="2" cellspacing="5" border="0">
  <tbody>
    <tr>
      <td width="72%" align="left"> <font class="indextop"> CVS</font><br />
      <font class="indexsub">platform cvs support</font></td>
      <td width="28%"><img width="120" height="86"
 src="http://dev.eclipse.org/images/Idea.jpg" /></td>
    </tr>
  </tbody>
</table>
<h1>CVS Eclipse Plug-in FAQ</h1>
<p>Last Modified: $Date: 2006/06/09 18:53:05 $</p>
<ul>
  <li><b><a href="#gettingStarted">Getting started</a></b>
    <ol>
      <li><a href="#gettingStarted_1">How do I get a project into my
workspace from CVS?</a></li>
      <li><a href="#gettingStarted_2">How do I put a project into CVS
from my workspace?</a></li>
      <li><a href="#gettingStarted_3">I already have a project checked
out from CVS with the command-line tool. How do I use it in Eclipse
without having to check out the whole project again?</a></li>
    </ol>
  </li>
  <li><b><a href="#browsing">Browsing the Repository</a></b>
    <ol>
      <li><a href="#browsing_1">Why don't my branches and versions show
up when I am browsing?</a></li>
      <li><a href="#browsing_2">Why do some modules defined in
CVSROOT/modules appear empty in the CVS Repositories view?</a></li>
      <li><a href="#browsing_3">When I expand HEAD in the CVS
Repositories View, it is always empty even though I know the repository
has contents. Whats wrong?</a></li>
    </ol>
  </li>
  <li><b><a href="#server">Server Issues</a></b>
    <ol>
      <li><a href="#server_1">What server versions of CVS are supported
          by Eclipse?</a></li>
      <li><a href="#server_1a">Why doesn't Eclipse 2.1.x work with CVS
          server versions 1.11.7 and beyond?</a></li>
      <li><a href="#server_cvsnt">Why aren't older (pre 2.0.58d) CVSNT versions supported?</a></li>
      <li><a href="#server_2">Where can I get CVS for UNIX or Windows?</a></li>
      <li><a href="#server_3">Where can I find documentation on CVS?</a></li>
      <li><a href="#server_6">When I perform a Replace With or Update
         operation, Eclipse tells me that option -C is not supported. What's
         wrong?</a></li>
      <li><a href="#server_7">I performed a Replace With or Override
and Update and one of the files involved ended up with strange
characters in it. Why?</a></li>
      <li><a href="#server_8">I got a "received broken pipe signal"
error. What does it mean?</a></li>
      <li><a href="#server_9">How do I use a local connection with
Eclipse?</a></li>
      <li><a href="#server_10">With CVSNT, why do I get the error: &quot;Error 
    fetching file revisions&quot;?</a></li>
      <li><a href="#server_11">Why can't I get Eclipse to work with
CVSNT and mapped network drives?</a></li>
      <li><a href="#server_12">Using CVSNT, Why do I get the error "cvs
[server aborted]: cannot find .: No such file or directory"?</a></li>
      <li><a href="#server_13">Why do I get the error &quot;Resource &lt;name&gt; 
      is not a child of folder &lt;folder&gt;&quot;?</a></li>
      <li><a href="#server_14">Why can't I set the keyword substitution mode for CVSNT using Eclipse?</a></li>
    </ol>
  </li>
  <li><b><a href="#ssh">Using SSH with CVS</a></b>
    <ol>
      <li><a href="#ssh_1">How do I use SSH to communicate with the
server?</a></li>
      <li><a href="#ssh_2">What is the difference between ext and
extssh?</a></li>
      <li><a href="#ssh_jcraft">My SSH server only support SSH2 protocol and 
        I'm using Eclipse 2.1.x</a></li>
      <li><a href="#ssh_3">How do I set up public-key authentication for use with 
        an external SSH client?</a></li>
      <li><a href="#ssh_4">When I try to connect using SSH, it tells me
"Could not chdir to home directory /home/user/myname". What did I do
wrong?</a></li>
      <li><a href="#ssh_5">I got an 'Unknown response' while trying to
perform CVS browsing. What went wrong?</a></li>
      <li><a href="#ssh_6">I can't get keys generated using Putty to work with Eclipse</a></li>
      <li><a href="#ssh_7">Why do CVS extssh connections fail on Fedora Core 4</a></li>
      <li><a href="#ssh_8">Why does CVS extssh prompt for my password even when it is saved?</a></li>
    </ol>
  </li>
  <li><b><a href="#10">Upgrading from Eclipse 1.0</a></b>
    <ol>
      <li><a href="#10_1">Is there anything I should do before
upgrading from Eclipse 1.0 to 2.0?</a></li>
      <li><a href="#10_2">I'm using a workspace from 1.0. Why does the
Team menu only contain "Share Project"?</a></li>
      <li><a href="#10_3">Eclipse 1.0 created all my files as binary in
the repository. How do I fix this?</a></li>
      <li><a href="#10_4">Is a Branch the same as a Stream? What about
other 1.0 terminology?</a></li>
      <li><a href="#10_5">I get a message saying the .vcm_meta file is
obsolete and should be deleted. Should I really delete it?</a></li>
    </ol>
  </li>
  <li><b><a href="#java">Using Eclipse and CVS for Java development</a></b>
    <ol>
      <li><a href="#java_1">When I check out a Java project from the
repository, how do I make Eclipse aware it is a Java project?</a></li>
      <li><a href="#java_2">What is the .classpath file? Should I
release it to the repository?</a></li>
      <li><a href="#java_3">In my CVS repository, there is a source
directory in the repository root. How can I use this with Eclipse?</a></li>
      <li><a href="#java_4">How do I check out a module definition as a
Java project</a></li>
      <li><a href="#java_5">Why does the bin directory keep appearing
in the Synchronize view?</a></li>
      <li><a href="#java_5a">I ignored the bin directory but it appears
to be shared anyway. Why?</a></li>
      <li><a href="#java_6">How do I use CVS keywords in Java templates?</a></li>
      <li><a href="#java_7">I'm working with a virtual module defined
in the CVSROOT/modules file. How do I commit the .project and/or
.classpath file?</a></li>
    </ol>
  </li>
  <li><b><a href="#commandLine">Compatibility Between CVS command-line
client and Eclipse</a></b>
    <ol>
      <li><a href="#commandLine_1">Does Eclipse use [WinCVS|CVS
command-line client] to talk to the server?</a></li>
      <li><a href="#commandLine_2">The command-line CVS client stores
information in CVS folders. Does Eclipse do the same thing? If so,
where are the folders?</a></li>
      <li><a href="#commandLine_3">Is Eclipse compatible with the
command-line CVS client?</a></li>
      <li><a href="#commandLine_4">Can I import a project into Eclipse
that was checked out using the command line?</a></li>
      <li><a href="#commandLine_5">Why does Eclipse corrupt my *.jar,
*.zip, etc. files?</a></li>
      <li><a href="#commandLine_6">When I use the command-line CVS on
my project, why do the CVS folders sometimes appear in the Navigator
View?</a></li>
      <li><a href="#commandLine_7">When I use the command-line CVS on
my project, why go I get "resource out of sync" errors?</a></li>
    </ol>
  </li>
  <li><b><a href="#patches">Working with Patches</a></b>
    <ol>
      <li><a href="#patches_1">How do I send someone a patch?</a></li>
      <li><a href="#patches_2">How do I apply a patch that someone sent
me?</a></li>
    </ol>
  </li>
  <li><b><a href="#linux">Linux Issues</a></b>
    <ol>
      <li><a href="#linux_0">On linux, using IBM JRE 1.3.0, I get a
timeout when connecting to a repository. What's wrong?</a></li>
      <li><a href="#linux_1">On Red Hat 8, Eclipse fails to make a
checkout but it works with other clients. Why?</a></li>
    </ol>
  </li>
  <li><b><a href="#windows">Windows Issues</a></b>
    <ol>
      <li><a href="#windows_0">Eclipse crashed Windows 2000 (blue
screen) when performing a CVS operation. What happened?</a></li>
      <li><a href="#windows_2">Eclipse always times out when performing
a Synchronize on one or two particular machines?</a></li>
      <li><a href="#windows_3">Why do CVS operations slow down when I
am connected to my network/dial-up?</a></li>
      <li><a href="#windows_4">Why do all my files show as outgoing
changes?</a></li>
    </ol>
  </li>
  <li><b><a href="#misc">Miscellaneous</a></b>
    <ol>
      <li><a href="#misc_0">Is there any equivalent to CVS_CLIENT_LOG
is Eclipse?</a></li>
      <li><a href="#misc_1">What is the .project file, and should I
release it to CVS?</a></li>
      <li><a href="#misc_2">I don't have update access to the CVS
repository. Can I still check out a project with Eclipse?</a></li>
      <li><a href="#misc_3">What does "Terminated with fatal signal 10"
mean?</a></li>
      <li><a href="#misc_4">I copied some folders from one CVS project
to another and the old CVS information remained. What happened?</a></li>
      <li><a href="#misc_8">I used Team &gt; Share Project to connect a
local project to an existing project and it takes forwever. Why?</a></li>
      <li><a href="#misc_9">Does Eclipse support Watch/Edit?</a></li>
      <li><a href="#misc_12">Why do I get a "Pre-commit failed" error
with no detailed error message?</a></li>
      <li><a href="#misc_13">Why can&quot;t I get my pserver CVS proxy to work?</a></li>
    </ol>
  </li>
</ul>
<!-- End of table of contents -->
<!-- Getting Started  -->
<h1>Getting Started</h1>
<ol>
  <li><b><a name="gettingStarted_1">How do I get a project into my
workspace from CVS?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <ol>
      <li>Window-&gt;Show View-&gt;Other. Select CVS-&gt;CVS
Repositories.</li>
      <li>Context Menu-&gt;New-&gt;Repository Location...</li>
      <li>Fill in the location information identifying your repository
and click Finish.</li>
      <li>Expand the newly-created repository location.</li>
      <li>Expand HEAD.</li>
      <li>Find the module you are interested in.</li>
      <li>Context Menu-&gt;Check Out As Project.</li>
    </ol>
    <br />
The project now exists in your workspace. </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
  </p>
  <li><b><a name="gettingStarted_2">How do I put a project into CVS
from my workspace?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <ol>
      <li>Select the project in the Navigator or other view.</li>
      <li>Context Menu-&gt;Team-&gt;Share Project...</li>
      <li>Fill in the location information identifying your repository
and click Finish.</li>
      <li>The Synchronize view opens, showing all your outgoing changes.</li>
      <li>Select the project in the Synchronize view.</li>
      <li>Context Menu-&gt;Commit.</li>
      <li>Answer yes when prompted to add new files to version control.</li>
      <li>Supply a release comment if you like.</li>
    </ol>
    <br />
The project now exists in the repository. </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
  </p>
  <li><b><a name="gettingStarted_3">I already have a project checked
out from CVS with the command-line tool. How do I use it in Eclipse
without having to check out the whole project again?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <ol>
      <li>Create a project in the workspace.</li>
      <li>File-&gt;Import, select File System, locate your files, click
Finish.</li>
      <li>Select the project in the Navigator or other view.</li>
      <li>Context Menu-&gt;Team-&gt;Share Project...</li>
      <li>The wizard should tell you that it found all the necessary
information. Click Finish.</li>
    </ol>
    <br />
Eclipse has now shared the project with the CVS repository. </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
</ol>
<br />
<!-- Browsing the Repository  -->
<h1>Browsing the Repository</h1>
<ol>
  <li><b><a name="browsing_1">Why don't my branches and versions show
up when I am browsing?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>When you are browsing in the CVS Repositories view, you may
expect to see branch and version tags which you have previously
created. In CVS, such tags are stored on individual files rather than
on projects or folders. Rather than scan every file in the repository,
Eclipse only scans one well-known file, .project, which should exist in
every Eclipse project. It is possible that you have other interesting
tags that do not appear on .project but which you would like to show up
in the CVS Repositories view.</p>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>To make these tags appear, do the following:</p>
    <ol>
      <li>Open the CVS Repositories view.</li>
      <li>Expand HEAD and select the project for which you want to
configure tags.</li>
      <li>Context Menu-&gt;Configure Branches and Versions...</li>
      <li>In the "Browse files for tags" table, select one or more
files that contain tags you would like to see.</li>
      <li>Click "Add Selected Tags".</li>
      <li>Click "OK".</li>
    </ol>
    <br />
The CVS Repositories view will now display the chosen tags under the
Branches and Versions categories. In addition, these tags will show up
in other tag-related operations, such as "Replace With-&gt;Branch or
Version...". </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="browsing_2">Why do some modules defined in
CVSROOT/modules appear empty in the CVS Repositories view?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>Some modules are not expandable because their definition is
complex and difficult to parse on the client. These modules can still
be checked out properly using the "Check Out Module" menu command from
the module's context menu. </p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="browsing_3">When I expand HEAD in the CVS
Repositories View, it is always empty even though I know the repository
has contents. Whats wrong?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>If you also see messages from the server like "-f server: ...",
this indicates that your CVS server has not been configured properly.
Here is the line as it should appear in the "/etc/inetd.conf" file
(example from AIX but the problem has also been seen on Solaris):</p>
    <ul>
      <li>cvspserver stream tcp nowait root /usr/bin/cvs cvs -f
--allow-root=/usr/cvsroot pserver</li>
    </ul>
    <p>The key is the 2nd copy of "cvs". The online cvs book at <a
 href="http://cvsbook.red-bean.com/cvsbook.html#The_pserver_access_method_is_not_working">
http://cvsbook.red-bean.com/cvsbook.html</a>
has it right (although I thought it was a typo so never tried it). Look
for "The pserver access method is not working" section. Part of the
reason I got this wrong is that the linux xinetd configuration
does not duplicate the name of the program. At one point I
just copied the fields from the linux config into the fields in the AIX
inetd.conf file. Now that I know what to look for, the other entries in
the inetd.conf file
have the program name duplicated.</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
</ol>
<br />
<!-- Server Issues  -->
<h1>Server Issues</h1>
<ol>

  <li><b><a name="server_1">What server versions of CVS are supported by Eclipse?</a></b>
  
    <p>In 3.0, Eclipse supports CVS version 1.11.1p1 or higher, running
    on a Linux or UNIX server and CVSNT 2.0.58d or later, when properly 
    <a href="../html-cvs/cvs-compatibility.html">configured</a>. Eclipse 2.1.2 and before does not work with
    CVS versions greater than 1.11.6 (see <a href="#server_1a">next point</a>).
    CVSNT versions prior to 2.0.58d are not supported but some versions have been reported to 
    work with few problems. There have also been some problems reported with HPUX and Solaris version 
    (see <a href="#browsing_3">above</a>).</p>
    <p>There are also cases where newer server versions are required for some 
      functionality. For instance, incoming change sets in the synchronize view 
      require CVS version 1.11.5 or beyond to work properly 
      (see bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=81960">81960</a>)</p>
  </li>
  
  <li><b><a name="server_1a">Why doesn't Eclipse 2.1.x work with CVS server versions 1.11.7 and beyond?</a></b>
    <p>Most of the interesting Eclipse CVS functionality relies on the
    format of the messages and the change in format made in 1.11.7 breaks
    the parsing in Eclipse versions prior to 2.1.3. Most of the
    incompatibilities for 1.11.x were addressed in 2.1.3. See bugs 
    <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=46655">46655</a>
    and <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=49056">49056</a>
    for patches and workarounds for previous versions of Eclipse or
    remaining incompatibilities. As for 1.12.x releases of CVS, Eclipse
    2.1.x is not compatible with this server version. Eclipse 3.0 is
    compatible with 1.12.7 but future releases of CVS may cause similar
    breakages. In such cases, Team&gt;Update and Team&gt;Commit should
    still work but the more advanced work flows (e.g. synchronizing) may not
    be reliable.</p>
  </li>
  
  <li><b><a name="server_cvsnt">Why aren't older (pre 2.0.58d) CVSNT versions supported?</a></b>
    <p>The reason older CVSNT versions aren't supported is because traditionally its
    development effort had been smaller and has lagged behind that of CVS
    Linux, thus its quality tends to be of issue. That has changed as of version 2.0.58d 
    which is now supported (when properly 
    <a href="../html-cvs/cvs-compatibility.html">configured</a>) on Eclipse 3.0 and beyond.</p>
  </li>
  
  <li><b><a name="server_2">Where can I get CVS for UNIX or Windows?</a></b>
    <p>CVS for UNIX can be downloaded by going to 
    <a href="http://www.cvshome.org">http://www.cvshome.org</a>. CVSNT can be
    downloaded by going to <a href="http://www.cvsnt.org">http://www.cvsnt.org</a>.</p>
  </li>
  
  <li><b><a name="server_3">Where can I find documentation on CVS?</a></b>
    <p>The CVS manual can be found by going to <a href="http://www.cvshome.org">http://www.cvshome.org</a>.</p>
  </li>
  
  <li><b><a name="server_6">When I perform a Replace With or Update
operation, Eclipse tells me that option -C is not supported. What's
wrong?</a></b>
    <p>This error indicates that your server version is CVS 1.10 or
before. The -C option was introduced in version 1.11. See <a
 href="#server_1">above</a> for supported CVS versions.</p>
  </li>

  <li><b><a name="server_7">I performed a Replace With or Override and
Update and one of the files involved ended up with strange characters
in it. Why?</a></b>
    <p>This error indicates that your server version is CVS 1.11 which
has a bug when replacing a locally dirty file. See <a href="#server_1">above</a>
for supported CVS versions.</p>
  </li>

  <li><b><a name="server_8">I got a "received broken pipe signal"
error. What does it mean?</a></b>
    <p>Eclipse sometime performs multiple commands within a single
connection to the server. This may cause problems with CVS server that
are running server scripts in reponse to certain commands.</p>
  </li>

  <li><b><a name="server_9">How do I use a local connection with
Eclipse?</a></b>
    <p>Eclipse does not support the use of the local connection method
as this requires a CVS client that also includes the CVS server code in
it. Command line cvs uses the same executable for the client and the
server whereas Eclipse is a client only. Since the repository is on the
same machine as the client, you should be able to use pserver.</p>
  </li>

  <li><b><a name="server_10">With CVSNT, why do I get the error: &quot;Error 
    fetching file revisions&quot;?</a></b>
    <p>This problem has several causes. One is the use of a backslash (\) in the
    repository path instead of a slash (/). Another can be a mismatch in the
    case of the letters in the repository path. See bug 
    <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=56635">56635</a> for more details.</p>
  </li>
  
  <li><b><a name="server_11">Why can't I get Eclipse to work with CVSNT
and mapped network drives?</a></b>
    <p>The problem is that CVSNT (as of 1.11.1.3) only supports using
the local connection method with network drives and Eclipse does not
support this connection method (see <a href="#server_9">above</a>). </p>
  </li>
  
  <li><b><a name="server_12">Using CVSNT, Why do I get the error "cvs
[server aborted]: cannot find .: No such file or directory"?</a></b>
    <p>I think the problem is that of user rights on the machine CVSNT
is running on. You might try one or more of the following options: </p>
    <ul>
      <li>create a group having full access rights to the CVSNT
repository directory structure plus the temp folder CVSNT is using.
This is easiest if you specify a separate CVSNT temp directory such as
"c:\cvstemp" using the Advanced tab in the<br />
CVSNT control panel. (The default temporary directories in
"C:\WINNT\TEMP" and "C:\Documents and Settings" have access
restrictions under Win2000 and WinXP).</li>
      <li>turn off impersonation in CVSNT</li>
      <li>add all CVS users to PowerUsers on the machine CVSNT is
running on</li>
    </ul>
    <p>&nbsp;</p>
  </li>
  
  <li><b><a name="server_13">Why do I get the error &quot;Resource &lt;name&gt; is not a child of folder &lt;folder&gt;&quot;?</a></b>
    <p>CVSNT has a separate option called <em>Emulate &quot;-n checkout&quot; bug</em> that must be enabled for Eclipse
    to work properly. This is because the &quot;bug&quot; in question is the behavior of a 1.11.x server which
    Eclipse requires.
    </p>
  </li>
  
    <li><b><a name="server_14">Why can't I set the keyword substitution mode for CVSNT using Eclipse?</a></b>
    <p>CVSNT has a non-standard way of dealing with keyword substitution so you will
need to use a CVSNT specific client to modify the keyword substitution mode.
    </p>
  </li>

</ol>
<br />
<!-- SSH  -->
<h1>Using SSH with CVS</h1>
<ol>
  <li><b><a name="ssh_1">How do I use SSH to communicate with the server?</a></b> 
    <p>The pserver protocol sends passwords over the network in plaintext. Many 
      people prefer to establish a secure connection using SSH. Eclipse supports 
      two methods of connecting to CVS repositories using SSH. </p>
    <p>To use the Eclipse's built-in SSH support, simply specify "extssh" as the 
      connection method type when creating the repository connection.</p>
    <p>To use SSH support from an external tool, you must: </p>
    <ol>
      <li>Specify "ext" as the connection method type when creating the repository 
        connection.</li>
      <li>Window-&gt;Preferences-&gt;Team-&gt;CVS-&gt;Ext Connection Method. On 
        this page, specify the name and location of your external ssh client. 
        (For example, "<code>C:\plink.exe</code>" or "<code>/usr/local/bin/ssh</code>"). 
        Also specify the name and location of the CVS binary <b>on the server</b>. 
        The default value is often correct.</li>
      <li>Ensure that you can log on to the server using the external SSH tool 
        <b>without specifying a password</b>.</li>
    </ol>
    <p><b>Note:</b> In Eclipse 2.1, you can also specify (on the Ext Connection 
      Method preference page) the parameters to be passed to the SSH client, including 
      the password.</p>
  </li>
  <li><b><a name="ssh_2">What is the difference between ext and extssh?</a></b> 
    <p>The extssh connection method uses a built-in SSH client. The ext connection 
      method allows you to specify an external SSH client to use. For extssh to 
      work with Eclipse 2.1.x and before, the server must be running an SSH server 
      with SSH1 protocol compatibility. If extssh does not work, it is possible 
      that the server is running only the SSH2 protocol. If this is the case, 
      you must configure the ext connection method with an external SSH client. 
      In Eclipse 3.0 and beyond, extssh does support SSH2. </p>
  </li>
  <li><a name="ssh_jcraft"></a><strong>My SSH server only support SSH2 protocol 
    and I'm using Eclipse 2.1.x</strong> <br />
    <br />
    Eclipse comes with a built-in SSH connection method called 'extssh'. Prior 
    to Eclipse 3.0, this method only supported SSH1 servers. If your server is 
    running SSH2 and you want to use Eclipse 2.1.x to connect to that server you 
    have two options: <br />
    <ol>
      <li>use a command line SSH client that supports SSH2 with the 'ext' connection 
        method <br />
      </li>
      <li>download a plugin created by <a
 href="http://www.jcraft.com/eclipse-cvsssh2/">JCraft</a> that provides a SSH2 
        connection method. <br />
      </li>
    </ol>
    To use the 'ext' connection method, download and install an SSH command line 
    client for your operating environment. In the Team &gt; CVS &gt; Ext Connection 
    Method preference page, configure the location of the SSH executable and how 
    the executable is to be called. For the ext method to work the CVS client 
    on your server must support the server mode. You can verify this by running 
    cvs --help-commands and ensure that the server command is supported.<br />
    &nbsp; </li>
  <li><b><a name="ssh_3">How do I set up public-key authentication for an external 
    SSH client?</a></b> 
    <p>The steps for setting up public-key authentication vary depending on your 
      SSH client. However, they all follow this set of common steps: </p>
    <ol>
      <li>Use the client program (or a utility that came with it) to generate 
        a public/private key pair. This program might be called ssh-keygen or 
        puttygen.exe.</li>
      <li>Copy the public key to the server. This is often done by pasting the 
        public key into the file <code>/home/user/.ssh/authorized_keys</code>.</li>
    </ol>
  </li>
  <br />
  <li><b><a name="ssh_4">When I try to connect using SSH, it tells me "Could not 
    chdir to home directory /home/user/myname". What did I do wrong?</a></b> 
    <p>This often happens when using SourceForge projects for the first time, 
      but may occur on other servers as well. You must manually log in to the 
      server, using an interactive SSH session, in order to create your home directory 
      for the first time. After this, you will be able to log in successfully. 
    </p>
    <p>Use your SSH client to connect to the server (e.g. cvs.sourceforge.net) 
      and log in with your username and password. Your home directory will be 
      created for you.</p>
  </li>
  <li><b><a name="ssh_5">I got an 'Unknown response' while trying to perform CVS 
    browsing. What went wrong?</a></b> 
    <p>A problem has been reported that involves the Cygwin SSH client (see bug 
      <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21180">21180</a>). 
      Try using another SSH client such as Putty or <a
 href="http://www.networksimplicity.com/openssh/">OpenSSH</a>. </p>
  </li>
  <li><a name="ssh_6"><strong>I can't get keys generated using Putty to work with 
    Eclipse</strong></a>
  <p>Putty's private key is encrypted by AES, but JCE (Java Crtptgraphy Extension) 
    included in J2SE 1.4.x does not support AES. So, at present time, there is 
    no plan to support it. Of course, JSch (the SSH2 client used in Eclipse) may 
    support Putty's key by using the latest J2SE in the near future, but Eclipse 
    3.0/3.1 will not be able to use it because they must run on J2SE 1.4.0. This 
    is explained more in bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=84281">https://bugs.eclipse.org/bugs/show_bug.cgi?id=84281</a>.</p>
  </li>
  <li><a name="ssh_7"><strong>Why do CVS extssh connections fail on Fedora Core 4</strong></a>
  <p>
  There is an issue with Sun's JDK 1.4.2 and Fedora Core 4 that causes extssh
  connections to fail with the message:
<pre>
     CVS Communication error: 
        org.eclipse.team.internal.ccvs.ssh2.CVSSSH2ServerConnection$SSH2IOException:
           Invalid argument or cannot assign requested address
</pre>
The issue seems to be related to both IPv6 and IPv4 being available in FC4. The
solution is to add
<pre>
-Djava.net.preferIPv4Stack=true
</pre>
with the -vmargs option when eclipse is started.
  <p></p>
  </li>
  <li><strong><a name="ssh_8">Why does CVS extssh prompt for my password even when it is saved?</a></strong>
  <p>This problem has been seen on servers that have a problems in a particular authentication
  method. This will cause extssh to believe that there has been an authentication failure which
  trigger a password prompt. See bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=119008">119008</a>
  for details.
  </p>
  </li>
</ol>
<br />
<!-- Upgrading from Eclipse 1.0 -->
<h1>Upgrading from Eclipse 1.0</h1>
<ol>
  <li><b><a name="10_1">Is there anything I should do before upgrading
from Eclipse 1.0 to 2.0?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p><b>IMPORTANT:</b> Before upgrading from Eclipse 1.0 to 2.0, make
sure you release all your changes to the repository using Eclipse 1.0.
Although it is possible to submit the changes using Eclipse 2.0 after
you upgrade, to do so is not straight forward due to a change in how
the synchronization information for each project is stored.</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="10_2">I'm using a workspace from 1.0. Why does the
Team menu only contain "Share Project"?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>Team support changed drastically between Eclipse 1.0 and 2.0. As
such, the method of sharing projects with the repository changed as
well. We have tried to make it relatively easy for you to migrate,
however. You will notice that your previously shared projects only have
"Share Project" in the Team menu. If you select that option, a wizard
will guide you through the migration process. When you are finished,
your project will be shared and the Synchronize view will open. You
will see conflicting changes on every file - this is due to changes in
the way sync information is stored between 1.0 and 2.0. If you do not
have any outgoing changes (which you shouldn't have if you committed
all your outgoing changes before upgrading as recommended above), then
you can simply select the project in the Synchronize view and select
"Override and Update" which will load the current contents from the
server. If you do have outgoing changes, you can pull down the triangle
menu in the Synchronize view and select "Compare File Contents". After
some work, the Synchronize view will show you only the files which are
actually different. You can then use the Synchronize view to resolve
these conflicts.</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="10_3">Eclipse 1.0 created all my files as binary in
the repository. How do I fix this?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>Any file checked into a CVS repository from Eclipse 1.0 was
marked as binary. This means that end-of-line conversions will not
occur on checkout, and some features of CVS (such as auto-mergeable
conflicts) will not apply to these files. As such, it may be desirable
to change some of these files from binary to text. To change the file
types, do the following:</p>
    <ol>
      <li>Make sure that all members of your team have saved and
committed any changes to the affected files.</li>
      <li>Select the resources you wish to change in the Navigator or
other view.</li>
      <li>Context Menu-&gt;Team-&gt;Set Keyword Substitution...</li>
      <li>Select "Automatic" to use the recommended detection. Click
Next.</li>
      <li>Select the checkbox labelled "Include files that are already
in the repository". Click Next.</li>
      <li>Click Finish. All affected files will immediately be modified
in the repository.</li>
      <li>All other team members must now check out fresh copies of all
affected files.</li>
    </ol>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="10_4">Is a Branch the same as a Stream? What about
other 1.0 terminology?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>In an effort to move away from generic terminology that applies
to all repository providers, and toward provider-specific terminologies
and workflows, many terms, menu items and labels have changed in 2.0.
Here is a brief list of some of the changes. For more detailed
information, please see the Eclise CVS documentation.</p>
    <table border="1">
      <tbody>
        <tr>
          <td><b>Eclipse 1.0</b></td>
          <td><b>Eclipse 2.0</b></td>
          <td><b>Comments</b></td>
        </tr>
        <tr>
          <td>Stream</td>
          <td>Branch</td>
          <td>The CVS terminology "Branch" replaces "Stream"</td>
        </tr>
        <tr>
          <td>Catchup</td>
          <td>Update</td>
          <td>"Update" refers to the standard CVS method of retrieving
remote contents. For more details on Update, see the Eclipse CVS
documentation.</td>
        </tr>
        <tr>
          <td>Release</td>
          <td>Commit</td>
          <td>These terms are equivalent.</td>
        </tr>
        <tr>
          <td>Add to Workspace</td>
          <td>Check Out as Project</td>
          <td>The CVS terminology "Check Out" replaces "Add to
Workspace".</td>
        </tr>
        <tr>
          <td><i>None</i></td>
          <td>Tag</td>
          <td>In CVS, a Tag refers to either a Branch Tag or a Version
Tag. Branches and versions together are referred to as Tags.</td>
        </tr>
      </tbody>
    </table>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="10_5">I get a message saying the .vcm_meta file is
obsolete and should be deleted. Should I really delete it?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>In Eclipse 1.0, meta-information about a project was stored in
.vcm_meta. In Eclipse 2.0, this mechanism was made more general and the
data was moved to the .project file. As such, the .vcm_meta file is now
unneeded. The Eclipse CVS client will warn you of this state by placing
a warning in the task list. If you still have people on your team who
are using Eclipse 1.0 for development with your repository, then you
should not delete the .vcm_meta file. If all members of your team are
using Eclipse 2.0, then you can safely delete the .vcm_meta file and
commit the deletion to the repository.</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
</ol>
<br />
<!-- Using Eclipse and CVS for Java Development -->
<h1>Using Eclipse and CVS for Java Development</h1>
<ol>
  <li><b><a name="java_1">When I check out a Java project from the
repository, how do I make Eclipse aware it is a Java project?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>Eclipse makes use of information in the .project file to
determine if a project is a Java project. If the project you have
checked out does not have a .project file, Eclipse will not mark it
properly. If you use "Checkout As..." instead of "Checkout As Project"
in the Repositories view, then you will be given an opportunity to
specify Java as the project type and provide Java specific
configuration information.</p>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  </li>
  <li><b><a name="java_2">What is the .classpath file? Should I commit
it to the repository?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>Eclipse's Java development tools create and maintain a special
file, .classpath, in the root of each Java project. This file contains
information about the project's classpath, including references to
other projects, external jars, and the project's own source path. If
you are working on a team with other developers that use Eclipse, you
probably want to commit this file to the repository so that others can
benefit from correct classpath settings. If the other developers on
your team do not use Eclipse, you may still want to commit the
.classpath file so that your settings are persisted - this should not
affect the users that are not using Eclipse.</p>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  </li>
  <li><b><a name="java_3">In my CVS repository, there is a source
directory in the repository root. How can I use this with Eclipse?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>If the name of the CVS module is part of the package name of
Java files, you will encounter problems. For example, if the module you
check out is called "test", and it contains a folder called "code"
which contains Java files that claim to be in the package "test.code",
Eclipse will not be able to compile these Java classes. There are
several solutions to this problem:</p>
    <ol>
      <li>One solution is to move the top-level package folder ("test"
in this case) to be a subfolder of the CVS module. In this case, create
a folder called "test" in the project "test", and move "code" into it.
Then commit your changes.
        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
      </li>
      <li>Another possible solution is to use modules definitions.
Modules can be defined in the CVSROOT/modules file to include root
level projects as subfolders of the checked out folder stucture. The
steps to get this to work for the above example are:
        <ol>
          <li>Add the following two lines to the CVSROOT/modules file<br />
test &amp;test<br />
MyProject &amp;test </li>
          <li>In the CVS Repositories View, select the modules with the
name matching the one defined in the CVSROOT/modules file (Note that in
Eclipse 2.0.x, you will need to switch to "Show Modules" mode using the
drop down menu in the title bar in order to see the module).</li>
          <li>Select "MyProject" and choose "Checkout Module" from the
popup menu.</li>
        </ol>
See the <a href="http://www.cvshome.org">CVS documentation</a> for
more information on defining modules.
        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
      </li>
      <li>If you are using Eclipse 2.1, you can create a new Java
Project and then perform a "Checkout Into..." on the CVS Module. This
operation allows you to check out a CVS modules into an existing
project as a subfolder and configures that target project to be shared
with CVS. </li>
    </ol>
    <p>Source folders must always begin beneath the project, not above
it. See the Eclipse Java Development Tools documentation for more
information on source folders.</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="java_4">How do I check out a module definition as a
Java project?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>To check out a module that is defined in the CVSROOT/modules
file as a Java project, you may have to pre-create the target project
as a java project in the workspace before performing the "Check Out
Module". </p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="java_5">Why does the bin directory keep appearing in
the Synchronize view?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>JDT marks most of its build output as being derived resources so
that CVS and other repository types can easily ignore these resources
from version control. However, if you define custom source and build
output folders, the newly created build output folder will not be
marked as derived. In many cases the root build output folder is named
bin. To ignore this folder, select it in the navigator and choose Team
&gt; Add to .cvsignore, then commit the .cvsignore file to the
repository so that the bin folder will be ignored at all times for that
project. </p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="java_5a">I ignored the bin directory but it appears
to be shared anyway. Why?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>If a resources whose name matches a pattern in the .cvsignore
also exists in the repository, then this resource is not ignored. For
the case of the bin folder, chances are that the bin folder was
committed to the repository at some point. The solution is to purge
this directory from the repository. </p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="java_6">How do I use CVS keywords in Java templates?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>Substitute the usual keyword (e.g. $Revision: 1.1 $) with the $
escaped version (e.g. $$Revision: 1.1 $$). </p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="java_7">I'm working with a virtual module defined in
the CVSROOT/modules file. How do I commit the .project and/or
.classpath file?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>The easiest way to address this problem is to create a project
in the repository whose purpose is to hold the .project and .classpath
files for your module. For example, if your module definition is <i>my-module
&amp;sub-dir1 &amp;sub-dir2</i> you could change it to <i>my-module
my-module-project &amp;sub-dir1 $sub-dir2</i> where my-module-project
is an new folder on the CVS server. Committing the .project and
.classpath files would create the files in this folder. </p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
</ol>
<br />
<!-- Compatibility Between CVS Command-line Client and Eclipse -->
<h1>Compatibility Between CVS Command-line Client and Eclipse</h1>
<ol>
  <li><b><a name="commandLine_1">Does Eclipse use [WinCVS|CVS
command-line client] to talk to the server?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>No. Eclipse implements a CVS client in Java that talks directly
to the server using the documented CVS protocol. No external CVS client
is required.</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="commandLine_2">The command-line CVS client stores
information in CVS folders. Does Eclipse do the same thing? If so,
where are the folders?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>Eclipse stores CVS sync information in CVS/ folders in the same
way as the command-line CVS client does. However, you rarely see these
folders within Eclipse. They are marked using a Core facility called
"team-private" which causes them to be hidden from view. If you open a
(non-Eclipse) file explorer you will see that these directories and
their contents appear on the file system.</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="commandLine_3">Is Eclipse compatible with the
command-line CVS client?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>Eclipse Team CVS stores its meta information in a format that is
compatible with the command-line CVS client. Thus you should be able to
use a CVS command line client against Eclipse workspace files on disk.
Please note that this support is experimental, and you may run into
problems. However, we are very interested in making this work, so
please report any bugs you find.</p>
    <p>Whenever you use external tools to modify workspace files, you
must perform a Refresh from within Eclipse to make the workspace aware
of the changes.</p>
    <p>You may encounter unexpected behaviour when using the
command-line CVS client in conjunction with deleted folders. Eclipse's
CVS support keeps track of deleted folders and their contents so that,
on the next synchronization, the Synchronize view can properly report
on the changes. This information is kept outside of the CVS meta folder
structure. This is because in CVS you normally inform the repository of
deletions prior to deleting them locally, which is a different workflow
than we like to support in the Synchronization view. Thus it is
recommended that you do not use the command-line CVS client while you
have pending deletions to commit. In some circumstances it could cause
the Synchronize view to display incorrect contents, although it should
not cause any lost work.</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="commandLine_4">Can I import a project into Eclipse
that was checked out using the command line?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>Yes you can. However, you may encounter errors from the builder
related to the copying of the CVS folders. This can have two causes.
The first is when the project is imported before the CVS plugin is
loaded. To avoid this problem, make sure you open one of the CVS views
before importing the project. The second is due to a "race" on import
between the CVS plugin and other plugins that react to the import. If
the CVS plugin wins the race, then the CVS folders are hidden but if
another plugin discovers the CVS folders first, it may cause the
workbench to "know" about them and perform inappropriate actions on
them. The best way to solve the problem is to run a <b>Team&gt;Update</b>
on the project and then shutdown and restart Eclipse (although closing
and reopening the view in which the CVS folders appear may work as
well). If this fails, you may need to check the projects out from your
repository using Eclipse instead of the command line client.</p>
    <p>There is a plugin named <i>org.eclipse.team.cvs.delta</i>
available on the <a
 href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-vcm-home/dev.html">Development
Resources</a> page that loads on startup and ensures that CVS folders
are properly hidden. If you import CVS projects often, you may want to
use this plugin. </p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="commandLine_5">Why does Eclipse corrupt my *.jar,
*.zip, etc. files?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>This problem is caused by the keyword substitution mode assigned
to the file on the server. Any binary files must be marked as -kb. The
default for CVS is to mark unknown file types as text. CVS provides
cvswrappers and the cvs admin command to set file types.</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="commandLine_6">When I use the command-line CVS on my
project, why do the CVS folders sometimes appear in the Navigator View?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>There are some cases where CVS folders are not hidden from the
UI as the user would expect. For instance, CVS folders will appear if a
user imports a CVS project into Eclipse before the CVS plug-in is
loaded. To avoid this, open the CVS Repositories view (thus loading the
CVS plug-in) before importing CVS projects into Eclipse. There is also
a plugin available <a
 href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-vcm-home/dev.html">here</a>
that will ensure that the CVS folders are properly hidden even if the
CVS plugin is not loaded.</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="commandLine_7">When I use the command-line CVS on my
project, why go I get "resource out of sync" errors?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>This occurs when files that are resources in Eclipse are
modified outside of Eclipse. One solution is to perform a refresh
(available from a resource's popup menu) on any resources or projects
that where modified outside of Eclipse. There is also an "auto-refresh"
plugin available from Platform Core (click <a
 href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-core-home/dev.html">here</a>
to go to there).</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
</ol>
<br />
<!-- Working with Patches -->
<h1>Working with Patches</h1>
<ol>
  <li><b><a name="patches_1">How do I send someone a patch?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>If you have modified a project that you checked out from CVS,
you may want to send those changes to someone else. This often occurs
when you do not have commit rights, but want to send the changes to
someone who does. To create a patch file:</p>
    <ol>
      <li>Select the changed project in the Navigator or other view.</li>
      <li>Context Menu-&gt;Team-&gt;Create Patch...</li>
      <li>Select a location for the patch.</li>
      <li>Use E-mail or other delivery method to send the patch to
someone else.</li>
    </ol>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="patches_2">How do I apply a patch that someone sent
me?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>To apply a patch, such as one generated in the previous step, do
the following:</p>
    <ol>
      <li>Select the changed project in the Navigator or other view.</li>
      <li>Context Menu-&gt;Compare With-&gt;Patch...</li>
      <li>Fill in the location of the patch file</li>
      <li>Click Next. A summary of changed files will appear.</li>
      <li>Click Finish. The changes are now merged into the workspace.</li>
      <li>Context Menu-&gt;Team-&gt;Synchronize. You may now commit the
changes into the repository.</li>
    </ol>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
</ol>
<br />
<!-- Linux -->
<h1>Linux Issues</h1>
<ol>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="linux_0">On linux, using IBM JRE 1.3.0, I get a
timeout when connecting to a repository. What's wrong?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>Problems have been reported in this area using IBM JRE 1.3.0 on
Linux. The solution is to upgrade your JRE to version 1.3.1.</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="linux_1">On Red Hat 8, Eclipse fails to make a
checkout but it works with other clients. Why?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>The problem may be the encoding in /etc/sysconfig/i18n file. If
the language encoding is </p>
    <pre>	LANG="en_US.UTF-8"<br />		</pre>
changing it to
    <pre>	LANG="en_US"<br />		</pre>
should fix the problem.
    <p></p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
</ol>
<!-- Windows -->
<h1>Windows Issues</h1>
<ol>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="windows_0">Eclipse crashed Windows 2000 (blue screen)
when performing a CVS operation. What happened?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>Instances of this have been reported that involve the NDIS.sys
driver and particular brands of network cards (see bug <a
 href="http://dev.eclipse.org/bugs/show_bug.cgi?id=21276">21276</a>).</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="windows_2">Eclipse always times out when performing a
Synchronize on one or two particular machines?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>Instances of this have been reported that involve the VIA
on-board network cards (see bug <a
 href="http://dev.eclipse.org/bugs/show_bug.cgi?id=21276">27077</a>).
Changing the network card fixed the problem.</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="windows_3">Why do CVS operations slow down when I am
connected to my network/dial-up?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>I have a large number of entries in my hosts file for anti-ad
software - and when I'm connected, name resolution (even to localhost)
slows to a crawl. When I'm not connected, localhost gets resolved at
normal speed. I think this might be a "feature" of 2000/XP - it didn't
happen in NT.</p>
  </li>
  <li><b><a name="windows_4">Why do all my files show as outgoing
changes?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>The CVS plugin uses timestamps of the files on disk to track the
modification state of versioned files. As a result, there are some
cases where Windows users may find that as a result of either (1) an
automatic daylight savings change or (2) moving files between file
systems, that all the files show up as outgoing changes. See <a
 href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5337">Bug 5337</a>
for an explanation of the problem and workarounds. </p>
<p>Thers is a utility action that will reset the timestamps so the 
files are in-sync with CVS. Be warned however that this utility resets the 
timestamps for any file whose timestamp differs from the sync timestamp by 1 hour. 
There is a possibility that this could reset a file that is really dirty. Use at your own risk.
To use the action, install the plugin found <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-vcm-home/plugins/fixtimestamps.zip">here</a> 
and them run the CVS Util/Fix Timestamps command available from the context menu of the Resource Navigator.
</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
</ol>
<!-- Miscellaneous -->
<h1>Miscellaneous</h1>
<ol>
  <li><b><a name="misc_0">Is there any equivalent to CVS_CLIENT_LOG is
Eclipse?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>Yes, there are tracing facilities in Eclipse that will allow you
to see what messages are being communicated between the CVS client and
server. Here's how:</p>
    <ol>
      <li>Create a file named ".options" in the directory you start Eclipse from 
        (in most cases this is the directory that contains the executable but 
        it may differ in some cases: for instance, if you use a shortcut in windows 
        and specify a different starting directory) that contains the following 
        2 lines that enable CVS debugging. 
        <pre>		org.eclipse.team.cvs.core/debug=true<br />		org.eclipse.team.cvs.core/cvsprotocol=true<br />		</pre>
      </li>
      <li>Start Eclipse with the following parameters tailored to you
local setup (The below example is for windows). The important aspects
are the use of java.exe instead of javaw.exe and the inclusion of the
-debug and -consolelog options. These will cause the debug console to
be visible and for debugging output to appear in the console.
        <pre>		C:\eclipse\eclipse.exe<br />		   -vm C:\jre\bin\java.exe<br />		   -data C:\eclipse\workspace<br />		   -debug<br />		   -consolelog<br />		</pre>
      </li>
      <li>Inside Eclipse, create your repo location and expand it in
the repositories view (for example). The CVS command traffic in the
debug console should contains an invocation of the update command that
looks something like (this is output from dev.eclipse.org):
        <pre>		CMD&gt; cvs -n update -d "."<br />		...<br />		update<br />		E cvs server: Updating .<br />		E cvs server: New directory `CVSROOT' -- ignored<br />		E cvs server: New directory `jdt-core-home' -- ignored<br />		E cvs server: New directory `jdt-debug-home' -- ignored<br />		...<br />		</pre>
      </li>
    </ol>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="misc_1">What is the .project file, and should I
release it to CVS?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>The .project file is created and maintained by Eclipse. It
stores meta-information about the project, such as which projects it
references and what type of project it is. If other members of your
team will be using Eclipse to check out this project from CVS, you
almost certainly want to release the .project file to CVS. Even if
other members of your team are not using Eclipse, you may still want to
release the .project file so that the information is persisted for you.</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="misc_2">I don't have update access to the CVS
repository. Can I still check out a project with Eclipse?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>In some circumstances, depending on permissions on the server,
you may not be able to browse the repository in the CVS Repositories
view. In this case, it may still be possible to check out the project
you want.</p>
    <ol>
      <li>Create an empty project.</li>
      <li>Context Menu-&gt;Team-&gt;Share Project...</li>
      <li>Enter the repository information and click Finish</li>
      <li>The Synchronize view appears. Update all incoming changes.</li>
    </ol>
    <p>The project in your workspace is now shared with the CVS
repository, and contains the remote contents.</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="misc_3">What does "Terminated with fatal signal 10"
mean?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>There is a bug in the CVS server related to some compression
levels. If you get this error, change the compression level on the CVS
preferences page and see if that helps.</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="misc_4">I copied some folders from one CVS project to
another and the old CVS information remained. What happened?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>There is a bug in the CVS client in Eclipse 2.0 that will not
purge the CVS folders properly if a folder under CVS control is moved
into a folder that is not under CVS control. If this occurs, you will
need to delete the CVS folders manually.</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="misc_8">I used Team &gt; Share Project to connect a
local project to an existing project and it takes forwever. Why?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>The particular method you have chosen to populate your workspace
(i.e. create a new project and then sync against a large existing one)
happens to be one of the most ineffiecient operations in the Eclipse
CVS client. The CVS protocol does not support this type of operation
directly which results in the ineffiecient, communication intensive
operation. The proper way to populate your workspace is to use
"Checkout as Project" from the CVS Repositories view. Once the project
and its contents exists locally, the synchronize operatons should be
much faster.</p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="misc_9">Does Eclipse support Watch/Edit?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p>Eclipse 2.1 supports CVS Edit/Unedit. In 2.0, you can use the
following workaround:</p>
    <pre>		Run-&gt;External Tools-&gt;Configure...-&gt;New<br />		Name: CVS Watchers<br />		Tool Location: C:\cygwin\bin\cvs.exe<br />		Tool arguments: watchers<br />		Working directory: ${container_loc}<br />		After running, refresh: Nothing<br />		Check Show Execution Log on Console<br />		OK<br />		New<br />		Name: CVS Edit<br />		Tool Location: C:\cygwin\bin\cvs.exe<br />		Tool arguments: edit ${resource_name}<br />		Working directory: ${container_loc}<br />		After running, refresh: Nothing<br />		Check Show Execution Log on Console<br />		OK<br />		</pre>
    <p> Unedit works the same as Edit, Editors works the same way as
Watchers. To use the tools, highlight the file or directory on which to
execute the CVS command, then select Run-&gt;External Tools-&gt;<tool
 name=""> If you don't select the file/directory first, CVS will
complain that the CVSROOT variable must be set first. </tool></p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
  <li><b><a name="misc_12">Why do I get a "Pre-commit failed" error
with no detailed error message?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p> The problem is that the CVS server communicates the error
details as M messages instead of E messages and so the error handling
in Eclipse doesn't display them. Eclipse has a CVS console which you
can open from the Window&gt;Show View&gt;Other menu command. If this
view is open and you run the failing commit, it will show you the error
details. </p>
  </li>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <li><b><a name="misc_13">Why can&quot;t I get my pserver CVS proxy to work?</a></b>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
    <p> There are some quirks with some firewalls. See bug 
    <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=133930">133930</a>
    for details</p>
  </li>
</ol>
</body>
</html>
