| Change Type | Action | Result |
| Incoming File Change | Update | Remote contents become local. Try with both Text and Binary files. |
| Incoming File Change | Override and Commit | Only in Both mode. Prompt for release comment. Cancel aborts, OK commits local file to server. |
| Incoming File Addition | Update | Remote contents become local. Try with both Text and Binary files. |
| Incoming File Addition | Override and Commit | Only in Both mode. Prompt for release comment. Cancel aborts, OK commits deletion to server. |
| Incoming File Deletion | Update | Local file is deleted. |
| Incoming File Deletion | Override and Commit | Only in Both mode. Prompt for release comment. Cancel aborts, OK commits local file to server. |
| Outgoing File Change | Commit | Prompt for release comment. Cancel aborts, OK commits local file to server. |
| Outgoing File Change | Override and Update | Only in Both mode. 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 | Commit is only enabled on an outgoing addition if it has first been added to version control. Prompt for release comment. Cancel aborts, OK commits local file to server. |
| Outgoing File Addition | Override and Update | Only in Both mode. 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 | Only in Both mode. File is re-created, remote contents become local. |
| Conflicting File Change | Override and Commit | Prompt for release comment. Cancel aborts, OK commits local file to server. Applies to both auto-mergeable and non-mergeable conflicts. |
| Auto-mergeable Conflicting File Change | Override and Update | Auto-mergeable conflicts have a two-way red/green arrow. Dialog prompts user to either auto-merge or replace. If user chooses auto-merge, then remote changes are merged in with local changes. File should still be dirty, local changes should still be present, CVS markup should not be present, and no .# files should have been created. If user chooses replace, 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. If the user chooses cancel nothing happens. |
| Non-mergeable 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 | Add to Version Control | Adds the file to version control. The icon should change in the sync view, and Override and Commit should now be enabled. |
| Conflicting File Addition | Override and Commit | Override and Commit is only enabled on an outgoing addition if it has first been added to version control. Prompt to warn of conflicting changes. If OK, prompt for release comment. Cancel aborts either dialog. OK commits local file to server. |
| Conflicting File Addition | Override and Update | Remote contents become local. |
Normally, selecting a folder is the same as selecting all of the individual files underneath it. (The exception to this is if the folder itself is changed, such as a conflicting addition). Performing any of the above operations on a folder should behave as if the files underneath it were selected.
Note that if an action is not specified for a change type, it does not apply to that change type. This is important in container selection.
For example: Commit does not apply to conflicting changes. If you select a folder with an Outgoing Change and a Conflicting Change in it, Commit will apply to the Outgoing Change but not to the Conflicting Change.
If multiple resources are selected, an action is enabled if it applies to any one or more of the selected resources. Choosing that action will apply the action only to those resources for which it is applicable.
For example: Commit does not apply to conflicting changes. Selecting an Outgoing Change and a Conflicting Change will result in Commit being enabled. Choosing Commit will apply to the Outgoing Change but not to the Conflicting Change.
Multi-Selection and Container Selection may be used in any combination with predictable results.
Create a conflicting file change. Manually edit the left source pane in the sync view. Hit "Save" on the popup menu. The file should remain a Conflict; you should get a prompt telling you to Mark as Merged when finished. Choose Mark as Merged in the popup menu of the tree. The file should change to an outgoing change. Commit the outgoing change.
Try Override and Update with different combinations of Auto-Mergeable and Non-Mergeable conflicts in the selection. If all conflicts are Non-Mergeable, then the only choice is to replace with remote or cancel. If one or more conflicts are Auto-Mergeable, the choices are (a) Auto-Merge any applicable files, and replace the rest with remote, (b) Replace all files with remote or (c) Cancel.
Choose Remove from View. Selected nodes should disappear. Refresh the view. The nodes should reappear.
If you choose Synchronize Outgoing Changes from the navigator, the sync view should be populated with only the Outgoing Changes and Conflicts. This operation should be significantly faster in many cases. In this case, ensure that Refresh does not cause Incoming Changes to appear.
Try any and all of the above, but use a branch instead of HEAD. Behaviour should be identical. The sync view decorator should show you the name of the branch.
Using Team->Branch, Replace With->Branch or Version, and Team->Tag as Version, you can create a project which has different tags mixed into it. For example, one folder may be shared as V2_0, a single file may be attached to the branch NEW_FEATURE_BRANCH, and the root of the project may be attached to HEAD. We need to test usage of these projects in the sync view. For example, if developer 1 has project P shared with HEAD, and folder P/F is shared with branch B, have developer 2 release a change to folder F in HEAD, and have developer 1 perform a sync. In this case developer 1 should not see the incoming change.