Application programming interfaces for generating and refreshing synchronization state.

## Package Specification

This package specifies the API for Team subscribers. A Subscriber provides access to the synchronization state between the local workspace resources and a set of variants of those resources, whether it be a code repository or some other type of server (e.g. FTP). A subscriber is typically associated with only a subset of the resources in the local workspace, referred to as the set of resources the subscriber supervises. The supervised local resources have a corresponding variant state which describes the state of the remote resources that correspond to the local resources.

A Subscriber provides:

- a set of root resources that define the subset of resources in the workspace that the subscriber supervises (some children of the roots may not be supervised, as indicated by the isSupervised method).
- access to the synchronization state (using SyncInfo) between the resources it supervises and their corresponding variant resources.
- the ability to refresh the the remote state
- change notification to registered listeners (of type ISubscriberChangeListener) when the variant state changes or when roots are added or removed.

### Implementing a Subscriber

An implementation of a subscriber must provide:

- a subclass of Subcriber which maintains the synchronization state between its local resources and their corresponding variants.
- an implemenation of org.eclipse.team.core.variants.IResourceVariant which provides access to the contents and other state of a variant resource that corresponds to a local resource
- an implementation of org.eclipse.team.core.variants.IResourceVariantComparator which is used by org.eclipse.team.core.synchronize.SyncInfo to determine the synchronization state of a resource.

Optionally, a subscriber may provide a subclass of org.eclipse.team.core.synchronize.SyncInfo in order to customize the algorithm used to determine the synchronization state of a resource.