# Synchronizing with the repository

## Method 1: Using the context menu

To synchronize resources in the Workbench with those in the repository:

1. In one of the navigation views, select the resources that you want to synchronize.
2. Right click and select Team > Synchronize with Repository. The Synchronize view opens.

## Method 2: Using the synchronize action

1. From the Team Synchronizing perspective select the Synchronize... action from the Synchronize button drop down.
2. Select CVS from the list of possible synchronization types and click Next.
   Note: If there are no other repository providers registered with the Workbench, then you will bypass this screen altogether.
3. Select the resource scope for the synchronize by either selecting Workspace, Selected Resources or Working Set. Then select Finish.
4. The Synchronize view will open.

Note: The synchronize action is not enabled by default in other perspectives. You can enable the action to appear in your current perspective by selecting Window > Customize Perspective. Then click on the Commands tab and check off Team.

Tip: If you choose the Workspace scope for your synchronization, you can then use method 3 below to always have an up-to-date view of your local modifications available in the Synchronize view without re-running the synchronize operation.

## Method 3: Using a pinned CVS Workspace Synchronization in the Synchronize view

Once you have a CVS workspace synchronization in the Synchronize view, you can pin it. This will prevent it from being replaced by the next CVS workspace synchronization that is launched using one of the previous 2 methods. Here are some of the advantages of using a pinned synchronization.

- The local modification state of the resources being synchronized is kept up-to-date. This means that, if you modify a file locally that is within the scope of a synchronization that appears in the Synchronize view, the resource will appear automatically in the view, if it is not already there.
- The remote state of all of the resources being synchronized can be refreshed using the Synchronize button in the toolbar of the Synchronize view.
- The remote state of a selection of resources can be refreshed using the Synchronize command from the context menu in the Synchronize view.
- You can schedule the refreshing of the remote state to happen at particular intervals (each hour, for example)

The implications of this is that you can see you outgoing resources without re-fetching the remote state from the server (a potentially long running operation). Also, the fetching of the remote state is run in the background so you can do other things (e.g. inspect changes) while the remote state is fetched.

### From within the synchronize view

1. Use the toolbar buttons to switch modes for this view. There are four modes:
   - Incoming mode - shows incoming changes only (resources in the repository that differ from what is in the Workbench).
   - Outgoing mode - shows outgoing changes only (resources modified in the Workbench).
   - Incoming/Outgoing mode - shows both incoming and outgoing changes.
   - Conflicts mode = shows only conflicting resources.

   Important: It is preferable to update resources in the Workbench first, resolve any conflicts that exist by merging, then commit Workbench resources to the repository.

2. It is possible that someone has committed a new revision of your file since you started working on it. This will result in a conflict, and care must be taken to resolve this. For this reason, conflicts are shown in all modes of the Synchronize view.

Team programming with CVS
Branches
Synchronizing with a CVS repository
Three way comparisons

Committing
Updating
Resolving conflicts
Comparing resources
Merging changes in the Compare editor
Merging from a branch
Version control life cycle: adding and ignoring resources
Replacing resources in the Workbench

CVS
Synchronize view