There are two types of model merge that can be used to merge two selected project versions (source and target):
- 3-way merge
- 2-way merge
3-way merge
The 3-way merge allows merging both local and server projects. To merge two selected project versions, the common ancestor (a common project version for both target and source) is used. The common ancestor is calculated automatically when working with Teamwork Cloud projects; however, you have to select a correct common ancestor manually for local and Teamwork Server projects. This is the recommended way to merge project versions because the 3-way merge is able to identify the changes made in the source and target project versions separately by comparing changes between the ancestor and both contributors. This allows merging the selected project versions more smoothly.
Visual representation of the 3-way merge
2-way merge
The 2-way merge compares two local or Teamwork Server project versions selected by the user. Typically, the target version of the project is considered to be the common ancestor (a common project version for both target and source). As a result, only the differences between the source and the target project versions are identified.
Visual representation of the 2-way merge
Merge in Teamwork Cloud
The 3-way merge is the default merging method used to merge the selected Teamwork Cloud projects. It means that the correct common ancestor version is specified automatically and there is no need to select one manually.
This is how the common ancestor is calculated:
- The lowest version of the trunk a branch was created from (it contains the latest changes both from the source and the target project), e.g., version #2 is considered the common ancestor version of the projects being merged. Once the correct common ancestor for the two selected project versions is calculated, a merge dialog is opened. In the merge dialog, you can review changes and accept/reject them. Once you are done, click Finish Merge and commit the changes to Teamwork Cloud. A new version, e.g., version #6 is created.
Automatic common ancestor calculation in Teamwork Cloud
Repetitive merge
When two selected branches are merged for several times, i.e., it is not the first merge, e.g., version #4 is merged with version #5 and then version #7 is merged with version #8, the latest common version (merge result) is considered a common ancestor. In this case, version #6, which was produced during the very last merge (when version #4 was merged with version #5), is used as the common ancestor of the source and target project versions because it contains data from both selected branches. This helps to prevent repeated merge decisions made in previous merges.
Automatic common ancestor calculation when there are repetitive merges
Set as latest
When the earlier version of the project is set as the latest version, e.g., version #9 is reverted to version #8 (version #10 is created) and then the result of two merged versions (e.g., version #10) is selected for merge with another project version, the common version that is closest to that specific reverted project version is considered the common ancestor.
Automatic common ancestor calculation when Set as latest is used
Please note that these common ancestor calculation rules are used only if the modeling tool and the Teamwork Cloud server are both of 19.0 SP3.