[eclipse-dev] Important changes in Team, CVS support - natures
We no longer use natures to mark a project as being under CVS control.
As of next build and from hereon, when sharing a project with CVS, you
won't get the nature in the .project, so don't be surprised by its absence.
For those with existing workspaces with CVS projects, the regular CVS menus
won't show up in the Team menu by default. See below to see what you need
to do to convert your project.
If you are a repository provider writer, also see below.
Team has been using core IProjectNatures to denote which projects are under
version control, and by which provider. This has given us numerous
filtering capabilities in the UI.
However, because the natures are stored in the .project, there are various
cases under which the appearance of a team nature gives "false positive"
indications of the project being under version control, when really it
isn't. For example, if you export a CVS project to the file system then
re-import it under a different name, the new project will have the CVS
nature yet won't be under version control. This case is true for any
provider. Other problems occur if the .project is merged or otherwise
modified to no longer have the provider nature.
Very recently, the UI team has added support for filtering by persistent
property. We have added code to take advantage of this in Team for marking
a project with a provider.
Our CVS provider will now use this alternative mechanism. We've also
changed the filtering rules for our CVS menus and property page to make use
of it. Since persistent properties are stored with the workspace metadata,
the projects will "remember" they are CVS projects across workbench
sessions. However, projects exported from Eclipse will (now correctly) no
longer be marked as being under version control. Projects will now be
marked as under CVS control when you initially share them, or when you
export them from the repository.
Existing CVS projects in old workspaces with new builds will be missing
their CVS menu items and CVS property page until the projects have been
converted (because the filtering key has been changed). This can be done
in one of two ways:
1. Checkout the project overtop the existing one
2. Use the "Convert Nature to Property" menu that will appear in CVS
projects with natures. Since the menu is filtered by the cvsnature, once
the nature is removed the menu will no longer appear.
The second item will not only add the persistent property so that the usual
CVS menus will appear, but will also remove the cvsnature from the
.project. This modified .project can then be committed to the repository.
Care must be taken if other members of the team have not updated to the new
build and if they CVS update their .project: depending on how they do this,
their project may no longer be considered a CVS project in their workspace.
Once a project has been updated to have the persistent property, the
presence or absence of a cvsnature in the .project will have no consequence
in the workspace.
The changes have been made in a backwards compatible manner: natures
continue to work as a means to mark the project with your provider.
However, we strongly encourage providers to switch to the new mechanism
since this will be the "official" way of marking yourself a provider.
More details will be sent out (via the vcm mail list) within the next day
to describe the new API and steps to convert. The changes are relatively
minor on the provider's part.
The Team team