How do I put a project into CVS from my workspace?

Click Finish and the Sharing wizard closes and the Commit wizard opens.

Supply a release comment and click Finish to commit the project contents to the repository.

The project now exists in the repository.

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?

Create a project in the workspace.

File->Import, select File System, locate your files, click
Finish.

Select the project in the Navigator or other view.

Context Menu->Team->Share Project...

The wizard should tell you that it found all the necessary
information. Click Finish.

Eclipse has now shared the project with the CVS repository.

Browsing the Repository

Why don't my branches and versions show up when I am browsing?

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.

To make these tags appear, do the following:

Open the CVS Repositories view.

Expand HEAD and select the project for which you want to
configure tags.

Context Menu->Configure Branches and Versions...

In the "Browse files for tags" table, select one or more
files that contain tags you would like to see.

Check the tags you want under "New tags found in the selected files"

Click "Add Checked Tags".

Click "OK".

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->Branch or
Version...".

Why do some modules defined in CVSROOT/modules appear empty in the CVS Repositories view?

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 menu item from
the module's context menu.

When I expand HEAD in the CVS Repositories View, it is always empty even though I know the repository has contents. Whats wrong?

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):

The key is the 2nd copy of "cvs". The online cvs book at http://cvsbook.red-bean.com
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.

Server Issues

What server versions of CVS are supported by Eclipse?

The following table describes which versions of CVS various Eclipse releases are know to support. By known, we
mean that, at last point of testing for a particular Eclipse release, the provided CVS version was the version
available to test against. It is likely that Eclipse will work with higher point releases of the same version but it is not guaranteed since it is always possible for changes in the server to be incompatible in some way with existing clients. Unless stated otherwise, it can be expected that Eclipse releases higher than those mentioned in the table support the same CVS server releases as the highest Eclipse release listed in the table. Anyone is welcome to update the table based on appropriate testing.

(5) CVSNT 2.5.03 includes a major security flaw and the vendor recommends you upgrade.

(6) CVS Suite 2008, CVS Suite 2009, CVS Suite 2009R2 etc and CVSNT 2.8.x are all directly descended from CVSNT 2.5.03 and so should work with Eclipse. March Hare Software (the vendor) test each new release with the latest Eclipse release to ensure compatibility and a user guide is available here.

(7) March Hare Software has tested Eclipse 2.1.3 and Eclipse 3.1 with CVS Suite 2009R2 according to the user guide available here.

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 81960)

What does Supported and Unsupported Mean?

When we say that a CVS server version is supported by Eclipse CVS, we mean that the full functionality of the Eclipse CVS client works with that server version. Since some of the functionality of the Eclipse CVS client relies on text messages, it is often the case that newly released CVS server version become incompatible with some of the functionality in Eclipse. In these cases, the Eclipse CVS client is still usable but one or more of the advanced features may not work properly.

The following table presents the basic CVS functionality that should always be available and how it is accessed in Eclipse:

CVS Command

Eclipse Command

checkout

Import>Checkout Projects from CVS (1)

update

Team>Update

commit

Team>Commit

tag

Team>Tag as Version

import

Team>Share Project (2)

(1) This command is also available
from the New>Project wizard in the CVS category. The list of projects may
not be available due to a new incompatibility in the Checkout wizard, in which
case you will need to type in the module path manually.

(2) The final step of the Share Project
wizard is a synchronize between the local workspace and the remote project.
This may fail due to incompatibilities, in which case the wizard can be Finished
or Canceled and the project committed using Team>Commit.

How can I test whether a server version is compatible with Eclipse?

If you want to use a new version of a CVS server that does not appear on the supported servers list, you can run the CVS tests to determine what, if any, compatibility problems may exist. The tests are not a 100% guarantee of compatibility since there may be subtle server changes that effect the Eclipse CVS client but were not covered by the tests. However, the tests will catch most problems.

Here are the steps to follow to run the CVS tests:

Go to the Eclipse download page for the version of Eclipse you are testing.

Scroll down to the link for the automated tests archive. It will be named
eclipse-Automated-Tests-<release-d>.zip. For example, for 3.0.1,
the name is eclipse-Automated-Tests-3.0.1.zip. Download the archive.

A link to the instructions is available in the text above the download link.
The instructions for 3.0.1 are here
but you should check the instructions for your particular release since they
may have changed.

The instructions describe how to provide the information required for connecting
to a test repository and for running only the CVS tests. Make sure these are
done properly.

The test run should report no errors. If errors are reported, the stdout
should contain a protocol trace of the client/server communication which should
help pinpoint where the incompatibility is.

If you get 1 or more errors when testing against a new server version, you can log a bug report and attach the test failure and client/server trace. Make sure to state your Eclipse and CVS server versions.

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 46655 and 49056 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>Update and Team>Commit should still work but the more advanced work flows (e.g. synchronizing) may not be reliable.

Why aren't older (pre 2.0.58d) CVSNT versions supported?

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 on Eclipse 3.0 and beyond.

How do I configure CVSNT to work with Eclipse?

Out-of-the-box, CVSNT will not work properly with Eclipse. You need to configure CVSNT to act like a standard CVS server. In CVSNT 2.0.58d, the required setting can be found under the 'Compatibility' tab. Check 'respond as cvs 1.11.2 to version request'; stop and restart the service. You will also need to check the Emulate -n checkout bug option since CVSNT has modified the behavior of the 'cvs -n update' command which is used by Eclipse to perform synchronization. although the CVSNT behavior is more intuitive, it differs from that of *nix CVS (one person's bug is another's feature).

Where can I find documentation on CVS?

When I perform a Replace With or Update operation, Eclipse tells me that option -C is not supported. What's wrong?

This error indicates that your server version is CVS 1.10 or
before. The -C option was introduced in version 1.11.

I performed a Replace With or Override and Update and one of the files involved ended up with strange characters in it. Why?

This error indicates that your server version is CVS 1.11 which
has a bug when replacing a locally dirty file. Go here to see the supported CVS versions.

I got a "received broken pipe signal" error. What does it mean?

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.

How do I use a local connection with Eclipse?

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.

With CVSNT, why do I get the error: "Error fetching file revisions"?

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 56635 for more details.

Why can't I get Eclipse to work with CVSNT and mapped network drives?

The problem is that CVSNT only supports using
the local connection method with network drives and Eclipse does not
support this connection method.

Using CVSNT, Why do I get the error "cvs [server aborted]: cannot find .: No such file or directory"?

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:

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
CVSNT control panel. (The default temporary directories in
"C:\WINNT\TEMP" and "C:\Documents and Settings" have access
restrictions under Win2000 and WinXP).

turn off impersonation in CVSNT

add all CVS users to PowerUsers on the machine CVSNT is
running on

Why do I get the error "Resource <name> is not a child of folder <folder>"?

CVSNT has a separate option called Emulate "-n checkout" bug that must be enabled for Eclipse
to work properly. This is because the "bug" in question is the behavior of a 1.11.x server which
Eclipse requires.

Why can't I set the keyword substitution mode for CVSNT using Eclipse?

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.

How can I use GSSAPI to make a gserver connection for CVSNT

Bug 41097 Has a couple of connection methods attached that support GSSAPI access via GServer.

Using SSH with CVS

How do I use SSH to communicate with the server?

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.

To use the Eclipse's built-in SSH support, simply specify "extssh" as the
connection method type when creating the repository connection.

To use SSH support from an external tool, you must:

Specify "ext" as the connection method type when creating the repository
connection.

Window->Preferences->Team->CVS->Ext Connection Method. On
this page, specify the name and location of your external ssh client.
(For example, "C:\plink.exe" or "/usr/local/bin/ssh").
Also specify the name and location of the CVS binary on the server.
The default value is often correct.

Ensure that you can log on to the server using the external SSH tool
without specifying a password.

Note: 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.

What is the difference between ext and extssh?

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.

My SSH server only support SSH2 protocol and I'm using Eclipse 2.1.x

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:

use a command line SSH client that supports SSH2 with the 'ext' connection
method

download a plugin created by JCraft that provides a SSH2
connection method.

To use the 'ext' connection method, download and install an SSH command line
client for your operating environment. In the Team > CVS > 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.

How do I set up public-key authentication for an external SSH client?

The steps for setting up public-key authentication vary depending on your
SSH client. However, they all follow this set of common steps:

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.

Copy the public key to the server. This is often done by pasting the
public key into the file /home/user/.ssh/authorized_keys.

When I try to connect using SSH, it tells me "Could not chdir to home directory /home/user/myname". What did I do wrong?

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.

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.

I got an 'Unknown response' while trying to perform CVS browsing. What went wrong?

A problem has been reported that involves the Cygwin SSH client (see bug
21180).
Try using another SSH client such as Putty or OpenSSH.

I can't get keys generated using Putty to work with Eclipse

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 84281.

Why do CVS extssh connections fail on Fedora Core 4

There is an issue with Sun's JDK 1.4.2 and Fedora Core 4 that causes extssh
connections to fail with the message:

The issue seems to be related to both IPv6 and IPv4 being available in FC4. The
solution is to add

-Djava.net.preferIPv4Stack=true

with the -vmargs option when eclipse is started.

Why does CVS extssh prompt for my password even when it is saved?

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 119008 for details.

=== Why do I get prompted first for my passphrase to the DSA key, then for
the keyboard interactive password TWICE for every CVS I perform? ===

This may be a permissions issue (see bug 179635). You can find out the specific issue by logging into your server with an SSH client. The server should print a message that describes the specific problem.

Why do I get prompted first for my passphrase to the DSA key, then for the keyboard interactive password TWICE for every CVS I perform?

This may be a permissions issue (see bug 179635). You can find out the specific issue by logging into your server with an SSH client. The server should print a message that describes the specific problem.

Why do CVS extssh connections to remote servers that only support SSH1 fail?

Support for the SSH1 connection method is optional and may be not available in your Eclipse or Eclipse based product.
If the org.eclipse.team.cvs.ssh plug-in is not installed, you will not be able to connect to old servers that only support ssh1 connections. In such cases, when attempting to perform cvs operations, you will see errors that contain the message: "Support for SSH-1 connection method required by the remote server is not available"

To enable SSH-1 support, extract the org.eclipse.team.cvs.ssh plug-in from org.eclipse.cvs-p2repo and copy to the dropins folder in your Eclipse.

Using Eclipse and CVS for Java Development

When I check out a Java project from the repository, how do I make Eclipse aware it is a Java project?

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"
in the Repositories view, then you will be given an opportunity to
specify Java as the project type and provide Java specific
configuration information.

What is the .classpath file? Should I commit it to the repository?

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.

In my CVS repository, there is a source directory in the repository root. How can I use this with Eclipse?

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:

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.

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:

Add the following two lines to the CVSROOT/modules file

test &test
MyProject &test

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).

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.

Source folders must always begin beneath the project, not above
it. See the Eclipse Java Development Tools documentation for more
information on source folders.

How do I check out a module definition as a Java project?

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".

Why does the bin directory keep appearing in the Synchronize view?

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
> 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.

I ignored the bin directory but it appears to be shared anyway. Why?

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.

How do I use CVS keywords in Java templates?

I'm working with a virtual module defined in the CVSROOT/modules file. How do I commit the .project and/or .classpath file?

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 my-module &sub-dir1 &sub-dir2 you could change it to my-module my-module-project &sub-dir1 $sub-dir2 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.

Compatibility Between CVS Command-line Client and Eclipse

Does Eclipse use [WinCVS|CVS command-line client] to talk to the server?

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.

The command-line CVS client stores information in CVS folders. Does Eclipse do the same thing? If so, where are the folders?

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.

Is Eclipse compatible with the command-line CVS client?

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.

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.

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.

There are some other known issues when using Eclipse with an external CVS client:

Eclipse is built on top of Java and Java determines file timestamps on some
file systems differently then the CVS command line client. This can lead to
the appearance of outgoing changes when no changes have been made to a file
(see bug 12070
for more details).

Cygwin clients treat the windows file system as if it is a Unix file system
and thus use Unix line endings. This is not a problem for Eclipse but CVS
clients running from Cygwin do not handle windows style line terminators in
the CVS meta files well. The workaround is to configure Eclipse CVS to use
Unix line endings in files and met-files. This is done by disabling the Team>CVS>Convert
text files to use platform line ending preference (available in Eclipse
3.0 and beyond).

Eclipse has an extssh connection method which uses an internal
SSH client. This method is incompatible with other CVS clients. To avoid this,
users can configure the ext connection method in Eclipse to use the
extssh connection method by choosing this option on the Team>CVS>EXT
Connection Method preference page. Once set, the user can create
repository locations using the ext connection method. These repositories
will use extssh inside Eclipse and whatever SSH tool is configured
for the command line client.

Can I import a project into Eclipse that was checked out using the command line?

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 Team>Update
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.

Why does Eclipse corrupt my *.jar, *.zip, etc. files?

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.

When I use the command-line CVS on my project, why do the CVS folders sometimes appear in the Navigator View?

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.

When I use the command-line CVS on my project, why go I get "resource out of sync" errors?

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. Another is to enable the Refresh Automatically preference on the General>Workspace preference page.

Working with Patches

How do I send someone a patch?

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:

Select the changed project in the Navigator or other view.

Context Menu->Team->Create Patch...

Select a location for the patch.

Use E-mail or other delivery method to send the patch to
someone else.

Note that, as of Eclipse 3.2, Create patch can be run with multiple projects selected.

How do I apply a patch that someone sent me?

To apply a patch, such as one generated in the previous step, do

the following:

Select the changed project in the Navigator or other view.

Context Menu->Compare With->Patch...

Fill in the location of the patch file

Click Next. A summary of changed files will appear.

Click Finish. The changes are now merged into the workspace.

Context Menu->Team->Synchronize. You may now commit the
changes into the repository.

Linux Issues

On Red Hat 8, Eclipse fails to make a checkout but it works with other clients. Why?

The problem may be the encoding in /etc/sysconfig/i18n file. If
the language encoding is:

Windows Issues

Instances of this have been reported that involve the NDIS.sys
driver and particular brands of network cards (see bug 21276).

Eclipse always times out when performing a Synchronize on one or two particular machines?

Instances of this have been reported that involve the VIA
on-board network cards (see bug 27077).
Changing the network card fixed the problem.

Why do CVS operations slow down when I am connected to my network/dial-up?

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.

Why do all my files show as outgoing changes?

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 Bug 5337
for an explanation of the problem and workarounds.
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 here
and them run the CVS Util/Fix Timestamps command available from the context menu of the Resource Navigator.

I get a "<filename> is an invalid name on this platform." when updating or synchronizing How do I fix it?

One way to fix it is to rename the file/folder so it doesn't conflict with the Windows naming rules. If you do not do this, Synchronizing will always have an error. However, for the case of an empty directory, CVS update can be configured to work by going to the Windows>Preferences dialog and finding the Team>CVS>Update/Merge preference page. On that page select the "Never preview and use CVS text markup to indicate conflicts" option.

CVS with SSPI (and CVSNT)

You need a version of CVSNT installed. If you have installed TortoiseCVS then you have a copy already.

Edit "extnt.ini" in "C:\Program Files\CVSNT" and add the following section:

Now open the CVS Repository Exploring perspective and create a new Repository Location. Paste :ext:.@my-cvs:/cvs/repository into the host field (Eclipse will automatically parse this and populate the correct fields) Click Finish and you should have working CVS access.

p.s. I recommend not using extnt.exe directly as I spent a few hours guessing the format (I probably should have looked up CVS_RSH definitions) and failed to get anyway. But as soon as I used cvs (which invokes extnt.exe for me) I had no problems connecting.

Miscellaneous

Is there any equivalent to CVS_CLIENT_LOG in Eclipse?

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:

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.

Start Eclipse with the following parameters tailored to your
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.

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):

What is the .project file, and should I release it to CVS?

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.

I don't have update access to the CVS repository. Can I still check out a project with Eclipse?

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.

Create an empty project.

Context Menu->Team->Share Project...

Enter the repository information and click Finish

The Synchronize view appears. Update all incoming changes.

The project in your workspace is now shared with the CVS
repository, and contains the remote contents.

What does "Terminated with fatal signal 10" mean?

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.

I copied some folders from one CVS project to another and the old CVS information remained. What happened?

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.

I used Team > Share Project to connect a local project to an existing project and it takes forever. Why?

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 operations should be
much faster.

Does Eclipse support Watch/Edit?

Eclipse does have support for Watch/Edit but there are some incompatibilities between the advanced features of Eclipse and CVS Watch/Edit.

In Eclipse 3.0 and beyond, certain operations (e.g. Compare with Latest from HEAD, opeing a comparison from the Syncyhronize view, Compare with Revision) will cause the edit state on the server to be lost (bug 41331).

In Eclipse 3.2, there was new funtionality introduced that interferes with Watch/Edit enabled on the server (bug 142728). To work around this, you need to do the following:

Open the Window>Preferences dialog, select the Team>CVS>Update/Merge section and enable the Never preview and use CVS test markup to indicate conflicts option.

Select the Team>CVS>Synchronize/Compare section and disable the Allow models to participate in synchronizations option.

Why do I get a "Pre-commit failed" error with no detailed error message?

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>Show View>Other menu command. If this
view is open and you run the failing commit, it will show you the error
details.

Why can't I get my pserver CVS proxy to work?

There are some quirks with some firewalls. See bug
133930 for details.

Synchronizing has some regressions in Eclipse 3.2. Why?

In 3.2, we introduced the concept of a model-based synchronization. This type of synchronization allows model providers (e.g. Java) to participate in the display of elements in the Synchronize view. This amounted to a total rewrite and we just didn't have the time or resources to implement the full funtionality that was available in the old-style synchronization. If you are missing funtionality that you require or just prefer the look and feel of the old view, you can disable the model-based sync by going to the Team>CVS>Synchronize/Compare preference page and unchecking "Allow models to participate in Synchronizations". You can also change the Update option on the Team>CVS>Update/Merge prefernece page to "Never preview and use CVS text markup" as the other options make use of the model-based synchronization.

Pruning always happens when checking out from a branch.

As discussed in bug 159480 and indicated in the CVS doc, prune empty directories is the default when you checkout a project
and specify a branch with the -r option. There appears to be no option to turn
off pruning.