### Project sets

Since the resources inside a project under version control are kept in the repository, it is possible to share projects with team members by sharing a reference to the repository specific information needed to reconstruct a project in the workspace. This is done using a special type of file export for team project sets.

In 3.0, API was added to ProjectSetCapability to allow repository providers to declare a class that implements project saving for projects under their control. When the user chooses to export project sets, only the projects configured with repositories that define project sets are shown as candidates for export. This API replaces the old project set serialization API (see below).

The project set capability class for a repository provider is obtained from the RepositoryProviderType class which is registered in the same extension as the repository provider. For example:

    <extension point="org.eclipse.team.core.repository">
        <repository
              typeClass="org.eclipse.team.internal.ccvs.core.CVSTeamProviderType"
              class="org.eclipse.team.internal.ccvs.core.CVSTeamProvider"
              id="org.eclipse.team.cvs.core.cvsnature">
        </repository>
    </extension>

Prior to 3.0, The org.eclipse.team.core.projectSets extension point allowed repository providers to declare a class that implements project saving for projects under their control. When the user chooses to export project sets, only the projects configured with repositories that define project sets are shown as candidates for export.

For example, the CVS client declares the following:

    <extension point="org.eclipse.team.core.projectSets">
    	<projectSets id="org.eclipse.team.cvs.core.cvsnature" class="org.eclipse.team.internal.ccvs.ui.CVSProjectSetSerializer"/>
    </extension>

The specified class must implement IProjectSetSerializer. Use of this interface is still supported in 3.0 but has been deprecated.