Repository-based Configuration Management > How to... > Rebasing a branch of a model (repository-based CM)
  
Rebasing a branch of a model (repository-based CM)
If you are working with Automatic Code Synchronizer (ACS) and maintaining reversible operation and EAB text in the code files, you must disable reverse in ACS before rebasing the branch. For more information, see Rebasing a branch when maintaining reversible properties in the code files (ACS).
You can start a rebase through Model Explorer or Modeler.
* 
To rebase a model, you require a CM Integration license and a Modeler license.
To rebase a model, you require write access permissions to the tip version of the Model trunk. If the tip version of the model trunk is not protected, you also require write access permissions to all Packages in the tip version of the Model trunk. Alternatively, you can have Repository Administrator or Repository Owner access permissions to the Database that owns the model version you want to rebase.
In addition, you require write access permissions to the Model and any Packages you want to change. Alternatively, you can have Repository Administrator or Repository Owner access permissions to the Database that owns the model version you want to rebase.
If you attempt to rebase a model version and the model version you are rebasing or the tip version of the trunk contain locked items (items being changed), Modeler abandons the rebase operation.
While a rebase operation is in progress, other users will not be able to change the tip versions of the trunk and branch.
After rebasing a branch, the tip version of the trunk and branch are protected.
If you delete an item in your trunk and then rebase a branch, the deleted item and its deleted child items are deleted from the resultant branch version, even if a child item had been moved to a new parent item in the branch.
If the tagged value of an item's Tag Definition has been changed in the trunk and you have removed that Tag Definition from the item in your branch, on rebasing the branch the tagged value that was set for the item is lost.
If a diagram has been changed in the trunk and branch, after rebasing the branch you may have to tidy up the resultant diagram.
Modeler enforces name uniqueness of items that are directly scoped to the same item; however, if a scoping item has scoped items of the same name created in the trunk and in a branch, the resultant model will have items of the same name directly scoped to the scoping item. When this happens, the reconciliation creates a Text Diagram in the resultant model that records the details of the clash.
To rebase a branch of a model (through Model Explorer):
1. Start Model Explorer. For more information, see Starting Model Explorer (repository-based CM).
2. Expand the database in which the branch you want to rebase resides.
3. If you want to compare the branch with the trunk before rebasing the branch, right-click the tip version of the branch, point to Difference, and then click With Latest Trunk (to compare with the tip version of trunk) or With Original Trunk (to compare with the model version from which the branch was created).
For more information about the Model Differencer dialog, see Model Differencer dialog - for repository-based CM.
4. Right-click the tip version of the branch you want to rebase, and then click Rebase.
Note that the Rebase command is available only if the trunk has been versioned since the branch was created.
5. From the confirmation dialog, click Yes.
6. When asked whether you want to clear model item locks, click Yes to clear locks in the source model versions before performing the rebase operation, or click No to not clear locks in the source model versions.
* 
Click Yes only if you are sure that no other users are using the two source model versions for the rebase operation.
7. If there are any clashes, for example, properties that have been changed in both the branch and the trunk, the Clashes dialog shows each clash. For each clash shown in the dialog:
a. If you want to overwrite the branch value from the trunk value, select the check box associated with the trunk column.
If you want to retain the branch value and not use the trunk value, select the check box associated with the sandbox column.
For more information about a Class, select the Class entry, and then click the Details button.
b. When you have selected a check box for each clash, click the Apply button to continue the rebase operation.
* 
If the branch has not been rebased, the tip version of the branch is compared with the version of the trunk from which the branch was created. If the branch has been rebased, the tip version of the branch is compared with the version of the trunk from which the branch was last rebased.
Note that Modeler creates a Text Diagram or Change Note in the model to record any clashes and the decisions made for those clashes. The name of the Text Diagram or Change Note begins with 'Clashes: '. If Change Tracking is enabled, Modeler creates a Change Note; if Change Tracking is disabled, Modeler creates a Text Diagram.
For information about working with the Clashes dialog, see Resolving clashes - the clashes dialog (repository-based CM).
8. When the Operation Completed dialog appears, confirm that 0 errors, 0 warnings and 0 conflicts are reported on the dialog:
If any errors or warnings are reported, click View Log, and then investigate the problem.
If no errors or warnings are reported, click OK.
If any conflicts are reported:
a. Open the resultant model.
b. Open the Text Diagram or Change Note whose name relates to the rebase operation you performed. The name of the Text Diagram or Change Note will begin with 'Conflicts: '.
c. Resolve the conflicts that relate to the items that are referenced in the content of the Text Diagram or the description of the Change Note. For more information, see Resolving conflicts (repository-based CM).
d. Through Model Explorer, protect the tip version of the branch. For more information, see Protecting a model (Model Explorer).
To rebase a branch of a model (through Modeler):
1. In Modeler, open the branch version that you want to rebase.
2. If you want to compare the branch with the trunk before rebasing the branch, on the File menu, point to Model, point to Difference, and then click With Latest Trunk (to compare with the tip version of trunk) or With Original Trunk (to compare with the model version from which the branch was created).
For more information about the Model Differencer dialog, see Model Differencer dialog - for repository-based CM.
3. On the File menu, point to Model, and then click Rebase.
Note that the Rebase command is available only if the trunk has been versioned since the branch was created.
4. From the confirmation dialog, click Yes.
5. When asked whether you want to clear model item locks, click Yes to clear locks in the source model versions before performing the rebase operation, or click No to not clear locks in the source model versions.
* 
Click Yes only if you are sure that no other users are using the two source model versions for the rebase operation.
6. If there are any clashes, for example, properties that have been changed in both the branch and the trunk, the Clashes dialog shows each clash. For each clash shown in the dialog:
a. If you want to overwrite the branch value from the trunk value, select the check box associated with the trunk column.
If you want to retain the branch value and not use the trunk value, select the check box associated with the sandbox column.
For more information about a Class, select the Class entry, and then click the Details button.
b. When you have selected a check box for each clash, click the Apply button to continue the rebase operation.
* 
If the branch has not been rebased, the tip version of the branch is compared with the version of the trunk from which the branch was created. If the branch has been rebased, the tip version of the branch is compared with the version of the trunk from which the branch was last rebased.
Note that Modeler creates a Text Diagram or Change Note in the model to record any clashes and the decisions made for those clashes. The name of the Text Diagram or Change Note begins with 'Clashes: '. If Change Tracking is enabled, Modeler creates a Change Note; if Change Tracking is disabled, Modeler creates a Text Diagram.
For information about working with the Clashes dialog, see Resolving clashes - the clashes dialog (repository-based CM).
7. When the operation is complete, review the text in the Output pane and confirm that 0 errors, 0 warnings and 0 conflicts are reported.
If any errors or warnings are reported, investigate the problem.
If any conflicts are reported:
a. Open the Text Diagram or Change Note whose name relates to the rebase operation you performed. The name of the Text Diagram or Change Note will begin with 'Conflicts: '.
b. Resolve the conflicts that relate to the items that are referenced in the content of the Text Diagram or the description of the Change Note. For more information, see Resolving conflicts (repository-based CM).
c. Protect the tip version of the branch. For more information, see Protecting a model (Model Explorer).