CVS
platform cvs support

Eclipse Compatibility with CVSNT and CVS 1.12.x

Last Modified: $Date: 2007/05/28 18:42:48 $

The Eclipse CVS client is a Java implementation of a CVS client that does not require any other CVS client to be installed. The advantage of this is that Eclipse CVS can be used without requiring the user to install any additional software. The disadvantages is that the CVS client protocol is weakly specified so changes to future CVS server versions may break compatibility with the Eclipse CVS client. This is compounded by the fact that the Eclipse CVS client relies on text message formats to provide advanced capabilities such as the Synchronize view and the Repositories view. It turns out that changes to the basic CVS protocol across server releases is rare but changes to the text message formats are not.

In this light, this document describes what compatibility levels are supported between the Eclipse CVS client and the different flavours and versions of CVS servers. Also described is the supported compatibility between the sandboxes (i.e., the local CVS workspace on the local file system) of different CVS clients and the Eclipse CVS client.

Server Compatibility

The following table describes which versions of CVS various Eclipse releases support:

Eclipse Release Supported Server Versions Unsupported Server Versions
Eclipse 1.x CVS 1.11.1p1 to CVS 1.11.6 CVS 1.11.7+, CVSNT, CVS 1.12.x (1)
Eclipse 2.0.x CVS 1.11.1p1 to CVS 1.11.6 CVS 1.11.7+, CVSNT, CVS 1.12.x (1)
Eclipse 2.1.0, 2.1.1, 2.1.2 CVS 1.11.1p1 to CVS 1.11.6 CVS 1.11.7+, CVSNT, CVS 1.12.x (1)
Eclipse 2.1.3 CVS 1.11.1p1 to CVS 1.11.17 CVSNT, CVS 1.12.x (1, 2)
Eclipse 3.0.x CVS 1.11.1p1 to CVS 1.11.17 CVSNT, CVS 1.12.x (3)
Eclipse 3.1 CVS 1.11.17, CVSNT 2.0.58b CVS 1.12.x (3)
Eclipse 3.2 CVS 1.11.21, CVSNT 2.5.03 CVS 1.12.x (3)

(1) A patch for compatibility between Eclipse 1.0.2 (WSAD 4.0.3) through 2.1.2 (WSAD 5.1) and CVS 1.11.7 through 1.11.17 is available here.

(2) A patch for compatibility between Eclipse 2.1.3 and CVS 1.12.3 is available here.

(3) There have been some changes in 1.12.9 that effect Eclipse functionality in minor ways (see bug 67627). There have been no problems reported with 1.12 builds prior to that.

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

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 next section describes what functionality should always be available.

Basic Functionality that Should Always Work

This section will describe the basic Eclipse CVS functionality which should work with any server version. This assumes that the server version may have modified text messages but has not changed the basic CVS protocol. Obviously, if a server version changes the CVS protocol in a non-backwards compatible way, then all bets are off. This has not happens yet and will probably never happen as server versions must maintain backwards compatibility with all CVS clients.

The following table presents the basic CVS functionality 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.

Testing for Compatibility Problems

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:

  1. Go to the Eclipse download page for the version of Eclipse you are testing.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

Client Compatibility

The Eclipse CVS client creates a local sandbox (or local workspace) that is compatible with the CVS command line client and tools that are based off of it. This works for the most part but there there are some known issues: