## Team - File System Repository Provider Example

### Introduction

The File System and Pessimistic Repository Providers examples shows how to define your own repository provider. In particular you this example shows how to:

- Extend the RepositoryProvider class and register a new repository provider.
- Register a sharing wizard that will appear in the Team > Share... wizard.
- Add resource actions to the Team menu.
- Implement synchronization support that shows up the Synchronize View.
- Use decorators to show the repository state of the local resources.
- How to implement a file modification validator.
- Add a repository provider to a capability.
- Add a History page for the basic file system which will display both the local history revisions and the file system revisions in the History view.

The example includes two separate repository providers: the basic file system and the pessimistic file system. The basic provider illustrates the synchronization support whereas the pessimistic provider is more focused to allowing you to test the workbench behavior with pessimistic repository providers. There is a preference page for the pessimistic provider that allows configuring the behavior of the file modification validator.

### Running the example

To start using this example create a project and select Team > Share Project... from the project's popup menu. Click the show all wizards button. This will show both the file system provider and the pessimistic provider.

- Basic file system provider: you will have to enter the location in the local file system where you would like to connect the project to. The Get and Put operations in the Team menu will now transfer to and from the selected location. And if you open the Synchronize View you can browse the synchronization between the local workspace and the remote file system location the files are stored in. If you edit a file and then create a Synchronization you can browse changes between the local and the remote.
- Pessimistic file system provider: the sharing wizard next page doesn't actually require any user input. The pessimistic provider doesn't actually copy the local files anywhere, and instead simply simulates a check in/check out by flipping the read-only bit on files. Once a project is shared with the pessimistic provider you can add files to control and the check in and check out.