During a migration process a number of conflicts might occur such as runtime, version control or work item tracking conflicts. They should always be expected and additional time for conflict resolution needs to be taken into consideration when planning a migration.
… stop the bus, we have a conflict!
During a version control migration, you may encounter the unthinkable event … a conflict and be confronted with the following screen:
Why did this conflict occur?
This is an excellent opportunity to remind you of the TFSIntegration.chm file that is included with the product, which gives us a great explanation:
What do the conflict resolutions mean?
The first two options allow you to define whether to always take the source or the target revision, which means that you will perform a “throw away the one side” and “enforce the revision from the other” scenario. You can also define the source path that the conflict resolution rule should be applied to, giving you great flexibility of defining a fine (specific path) or coarse (root path) grained resolution.
The selection which side (source or target) must be analysed, planned and actioned with care … otherwise you may face a horde of angry developers.
… you lost all my revisions?!?
The third option is a really interesting one, which gives you greater control which is often needed when the conflict occurs in a bi-directional synchronization environment, where teams are working on both the source and target data and inadvertently introducing the same conflicting-edit scenario. The option allows you to engage and straighten out situations where you need to manually merge and bring the systems back to a “sync point”.
The processing of this resolution stores this pair of change sets in the IntegrationPlatform DB’s CONVERSION_HISTORY table, updates the HighWaterMarks on each side with these change set numbers, and then marks all in-progress or conflicted migration instructions in the platform’s pipeline as Complete so the sync/migration will start fresh from the new high water marks.
The possible flow of events could be:
… a huge thanks to Bill Barnett, Bill Essary and Brad Peterson for their discussion thread that sparked this blog post.