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.
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:
|:pserver:firstname.lastname@example.org:/cvsroot/eclipse||The Eclipse platform project|
|:pserver:email@example.com:/cvsroot/webtools||Web Tools Platform project|
|:pserver:firstname.lastname@example.org:/cvsroot/datatools||Data Tools project|
|:pserver:email@example.com:/cvsroot/stp||STP SOA tools project|
|:pserver:firstname.lastname@example.org:/cvsroot/org.eclipse||eclipse.org web sites|
You can also create an anonymous CVS connection manually:
|Repository Paths||(See "Repository paths", below)|
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 http://dev.eclipse.org/viewcvs/.
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 ':pserver:email@example.com/cvsroot/eclipse' 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:
|Repository Paths||(See "Repository paths", below)|
|User||(your committer user id, supplied by the webmaster)|
|Password||(your committer password)|
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/webtools||Web Tools Platform project|
|/cvsroot/datatools||Data Tools project|
|/cvsroot/stp||STP SOA tools project|
Other repository paths:
|/cvsroot/org.eclipse||eclipse.org 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.
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.