CVS Howto

From Eclipsepedia

Jump to: navigation, search
Note that CVS has been deprecated at The deadline for migrating to Git is December 21/2012. Please see SCM Countdown.

There are several ways to get the source for the Eclipse projects. Most developers are actually developing their own plug-ins and are interested in browsing the Eclipse source and using it during debugging. For this, you can either browse the CVS repository online or use the source included in the Eclipse Classic download featured on the Eclipse downloads page. The download contains source zips which can be attached to jars in the SDK's Java tooling and used for browsing and debugging.


Anonymous CVS

For people actually want to change Eclipse code but who do not have the required commit rights in that area, all elements of the Eclipse projects are available via anonymous access to the development CVS repository. Using anonymous access you can checkout code and modify it locally, but cannot write it back to the repository. This is handy if you would like to fix a bug or add a feature. Get the code via anonymous access, do your work and then pass the work on to a committer (in a patch attached to a bug report) for inclusion in the repository. Committers love to have bugs fixed for them!

To use anonymous access from Eclipse, simply paste the repository location url in the "CVS repositories" view: The Eclipse platform project Tools project Web Tools Platform project BIRT project Technology project Runtime project TPTP project DSDP project Data Tools project STP SOA tools project Modeling project Mylyn project web sites

You can also create an anonymous CVS connection manually:

Repository Paths (See "Repository paths", below)
User anonymous
Password (leave blank)
Connection Type pserver

From there you can browse the repository and add projects to your workspace. If you do some changes that you'd like to contribute, rather than committing the changes to the repository (which you can't do as the anonymous user), you should save a diff file and either mail it to a committer or post it on the relevant mailing list. Note that large files cannnot be posted to the mailing lists.

Note that the pserver protocol is only available to the anonymous user. All committers must use SSH to access the CVS repository if they wish to use their user id and password (i.e., if they want to write to the repository).

The repository is also made available for browsing at

The Eclipse UI offers strong support for cvs checkout but you can also use the command line, e.g. you can checkout the plugin "org.eclipse.e4.ui.workbench3".

cvs -d '' co e4/org.eclipse.e4.ui/bundles/org.eclipse.e4.ui.workbench3

Committer access to CVS

Developers with commit rights have individual user ids and passwords in the Eclipse project development repository. As a committer you can use SSH (Secure SHell) to connect to the CVS repository as follows. Go to a Repository View and add a new CVS repository location. When asked for the repository location enter the following:

Committer CVS Connection Information
Repository Paths (See "Repository paths", below)
User (your committer user id, supplied by the webmaster)
Password (your committer password)
Connection Type extssh

Once your information is authenticated, you can browse the repository and add projects to your workspace. If you do some changes that you'd like to contribute, after testing and ensuring that you have followed the contribution guidelines, you are free to release your changes to the repository. Of course, you can only release changes to projects for which you have commit rights.

Note that you can use the SSH protocol and your Eclipse user id to access projects for which you are not a committer but you will not be able to release changes.

CVS Repository Paths

Use the following repository paths to connect to the Eclipse projects:

/cvsroot/eclipse The Eclipse platform project
/cvsroot/tools Tools project
/cvsroot/webtools Web Tools Platform project
/cvsroot/birt BIRT project
/cvsroot/technology Technology project
/cvsroot/rt Runtime project
/cvsroot/tptp TPTP project
/cvsroot/dsdp DSDP project
/cvsroot/datatools Data Tools project
/cvsroot/stp STP SOA tools project
/cvsroot/modeling Modeling project

Other repository paths:

/cvsroot/org.eclipse web sites

Using Eclipse and CVS

In general, each Eclipse plug-in corresponds to a CVS module of the same name in the repository. These modules are further grouped using CVS module aliases. A module alias is a virtual module which stands in for several other modules. In the Eclipse repository, each component has a module alias which references the plug-in projects/modules which are part of the component. For example, the Platform's Core component has an alias called platform-core which references all of the Core's plug-in projects/modules (e.g., org.eclipse.core.runtime, org.eclipse.core.resourses,...). There are also module aliases for each component's tests and examples. The module aliases have been elided if there is nothing to reference (e.g, if there are no examples). The CVS support in Eclipse supports loading and filtering using these module aliases.

Most open source CVS repositories do not enable the history file mechanism for recording repository operations since it is too costly. As a result, users must explicitly know and state the CVS tags they wish to use when looking at the repository. Eclipse manifests CVS tags in two ways; as version labels and as stream (CVS branch) labels. Rather than having to remember and manually enter these values, Eclipse can discover them for you.

Users can choose a specific file in the repository and then ask Eclipse to add all of the version or stream labels on that file to the repository explorer's view. Users can then select a stream or version and navigate to other resources which are simiarly tagged.

The auto-discovery mechanism can be costly in some situations so Eclipse also supports the explicit declaration of version and stream (CVS branch) tags. Again using the repository explorer users can define a project version label or a stream name (both of which correspond to CVS tags). The repository explorer will then use these as the context in which to browse the repository.

For more details on these mechanisms, please see the online help documentation included in the Eclipse SDK.

git mirrors

The Eclipse CVS repositories are mirrored to git for read-only use. Please see the git repositories page.

Other CVS Clients

The Eclipse CVS repository is a standard CVS implementation. As such, you can use just about any CVS client to read/write resources from/to the repository. There are however a number of files maintained in the workspace which contain Eclipse metadata (e.g., project definitions, Java classpath information). These files are written locally by Eclipse tools and then persisted in the CVS repository. If you are using third party CVS clients, these resources may get out of date or inconsistent.

A checkout of a CVS repository created by Eclipse with the extssh protocol is, however, in nonstandard format. Not all CVS clients understand the reference to the extssh protocol in the CVS/Root files. In particular, the Unix CVS client (download), in its versions 1.11.22 and 1.12.13, gives an error message Unknown method (`extssh') in CVSROOT. This is a problem for you if you want to monitor and update a checkout with both Eclipse and the command-line cvs program. To get a version of cvs that supports the extssh protocol notation, you need this patch for the 1.11.x series or this patch for the 1.12.x series or the newest sources from the cvs CVS. Alternatively, you can use distinct checkouts: one for use with Eclipse, and one for use with the command-line tool.

CVS and firewalls

Since some developers are behind firewalls which block access to hosts on tcp port 22 (ssh) or cvs pserver (2401), provides a redirection host which may be used in some cases to work around these restrictions. This host may be used if your firewall passes traffic on ports 80 or 443. This host cannot be used if you are behind a transparent proxy.

Host access may be tested in the following manner, by using a command prompt (Start/Run/CMD on Windows)

For committer extssh access:

   telnet 443 

For anonymous CVS services:

   telnet 80  
   telnet 443

A successful connection will look similar to the following; any connection log that shows a mangled response or doesn't allow a connection would be considered a failure:

   bash-3.00$ telnet 80
   Connected to
   Escape character is '^]'.

Anonymous CVS Setup using a Firewall

CVS pserver proxy connection.jpg

extssh CVS Setup using a Firewall

CVS extssh proxy connection1.jpg

CVS tarball snapshots

We now provide weekly snapshots of the entire CVS repositories. These tarballed files are the raw RCS-encoded files (,v), intended for those who need the entire CVS repository. If you're only looking for the latest source, or a specific version, THIS IS NOT WHAT YOU WANT. Connect to our pserver CVS server (above) instead.

The snapshots are available on our archives site.

See also