Version Control Feature Details

Below is a list of some of the key features of the Version Control portion of the Migration and Sync Toolkit.

Change Grouping

For systems that do not have a concept of a changeset, the ChangeGrouping class provides a way to group actions to be migrated together. These new ChangeGroupings are created in the analysis phase.

Handling Conflicts

During both the migration and synchronization processes, multiple classifications of conflicts can occur. Several common conflict types are handled by default by the Toolkit, requiring no further implementation by a tool author. The types of conflicts and the resolution mechanisms are described in the following sections

Analysis Conflicts

As files are analyzed by the Toolkit's analysis engine, several scenarios can arise that could lead to a potential conflict scenario. An analysis conflict is any scenario in which the actions that make up a change grouping include actions that must be performed in a specific order to produce the correct content.

A simple example of an analysis conflict is a change grouping that contains and "add" and "edit" action on a single file. In order for the content to be created correctly in TFS, the "add" must occur before the "edit". Although this example is trivial, and the solution is obvious, the Toolkit corrects the order of operations.

Another example that is handled by default in the Toolkit is the detection of cyclical rename operations. If two or more files are renamed in a circular fashion (A renamed to B, B renamed to A), the Toolkit handles the cycle correctly to avoid overwriting the same content in multiple files. In the example above, if the renames did happen exactly as listed, then both A and B would have the same content (A's original content). The Toolkit emulates the action of using a temp file in the process of performing a cyclical rename to ensure that all files in a change grouping are renamed correctly.

Synchronization Conflicts

Files that are being synchronized by the Toolkit are susceptible to numerous conflicts when two or more individuals have modified a common group of files. A synchronization conflict is any scenario in which an item being synchronized between TFS and the source system has changes made in each system during a single synchronization interval.

A basic example of a synchronization conflict is an edit conflict, which is resolved automatically by the Toolkit. In the case where two individuals have edited a file in synchronization, and the file is synchronized, the Toolkit will detect the edits and throw a conflict event. Because the two actions are edits, the Toolkit will handle the event by shelving the changes from the source server in TFS and pushing the changes from the TFS side to the source system. By doing this, the changes from TFS are preserved in both sides, and the other changes are preserved as well.

If any other combination of actions create a conflict scenario during synchronization (i.e. one file is renamed to two different names), the Toolkit will simply throw a conflict event and skip migrating the changes.


A list of default settings that are available for the Toolkit and the WSS reference implementation for VC can be found on the following page: Version Control Settings.

Last edited Jun 29, 2007 at 4:50 PM by mmitrik, version 1


No comments yet.