## Synchronize View

Since: 3.0
Last Modified: $Date: 2007/05/23 13:19:14 $

### Synchronize View Modes

Ensure that choosing direction modes result in proper filtering.

- Incoming mode contains incoming changes and conflicts.
- Outgoing mode contains outgoing changes and conflicts.
- Both mode contains all change types.
- Conflict mode contains only conflicts.

Also ensure that there are no empty containers (e.g folders or projects) in any of the modes.

### Synchronize View Models

Ensure that each model contains the appropriate output. Models to test include:

- All Models: Projects should contain content from the highest level model (e.g. Java projects contains Java content like packages while non-Java projects contains folders).
- Workspace: All projects are shown and contain folders. For this model, also test the presentation types (Flat, Hierarchical and Compressed Folders).
- Java: Only Java projects are present and contain Java content (e.g. packages). Also ensure that any resource content is present (e.g. non-source folders).
- Change Sets: All changes are grouped by change set.

Also ensure that mode switching works properly for each model type.

### Synchronize View Operations

Ensure Commit and Update buttons:

- operate on all applicable changes
- prompt in some form before executing

Ensure Update menu action:

- is enabled when selection contains incoming or conflicting changes
- operates only on selected changes
- silently handles mergable conflicts
- will prompt if conflicts are not mergable

Ensure Commit menu action

- is enable when selection contains outgoing changes
- prompts for unadded resources
- operates only on selected changes

Ensure Override and Update

- is enabled for outgoing and conflicting changes
- prompts to confirm
- operates only on selected changes

Ensure Mark as Merged

- is enabled for incoming and conflicting changes
- operates only on selected changes

Ensure Refresh button refreshes all projects regardless of mode, selection or working set.

Ensure Refresh menu action refreshes only the selection

All actions on large sets

The following table can be used to determine what operations are appropriate and what result to expect.

Change Type | Action | Result
Incoming File Change | Update | Remote contents become local. Try with both Text and Binary files.
Incoming File Change | Mark as Merged | File becomes an outgoing change.
Incoming File Addition | Update | Remote contents become local. Try with both Text and Binary files.
Incoming File Addition | Mark as Merged | File becomes an outgoing deletion.
Incoming File Deletion | Update | Local file is deleted.
Incoming File Deletion | Mark as Merged | File becomes an outgoing addition.
Outgoing File Change | Commit | Prompt for release comment. Cancel aborts, OK commits local file to server.
Outgoing File Change | Override and Update | Remote contents become local. Try with both Text and Binary files.
Outgoing File Addition | Add to Version Control | Adds the file to version control. The icon should change in the sync view, and Commit should now be enabled.
Outgoing File Addition | Add to .cvsignore | Adds the file to .cvsignore. The file should disappear from the sync view. The .cvsignore file should appear (if it wasn't visible already). The file should not appear in subsequent syncs.
Outgoing File Addition | Commit | Prompt for release comment should also include prompt for file type if the type of the new file is not known. Cancel aborts, OK commits local file to server.
Outgoing File Addition | Override and Update | Local file is deleted.
Outgoing File Deletion | Commit | Prompt for release comment. Cancel aborts, OK commits deletion to server.
Outgoing File Deletion | Override and Update | File is re-created, remote contents become local.
Conflicting File Change | Update | If the change is auto-mergable, the file becomes an outgoing change and includes the remote changes and the local changes. Otherwise, the user is prompted to indicate that a merge was not possible.
Conflicting File Change | Mark As Merged | File becomes an outgoing change.
Conflicting File Change | Override and Update | Dialog prompts user to replace local changes. If user cancels nothing happens. If user chooses OK, then local changes are discarded and remote contents replace local. No .# files created, no CVS markup, and the file is not dirty as a result.
Conflicting File Addition | Mark as Merged | File becomes an outgoing change.
Conflicting File Addition | Override and Update | Remote contents become local.