Resolving Conflicts |
9 |
![]() |
Conflict Resolution Process
When files change concurrently in both a parent and child workspace, they are in conflict. Neither the version of the file in the child nor the version in the parent can be copied to the other without overwriting changes. Conflicts are detected during Bringover Update transactions. You must resolve conflicts in the child before the conflicting file(s) can be put back to the parent. The Configuring program assists you in resolving conflicts. Use the following procedures to resolve conflicts if you are using the GUI. If you are using the CLI, see the resolve(1) manual page for more information. Changing Names
The current release of TeamWare uses new command names, so the following table summarizes the correspondences for you. Note that the old commands still work, however this manual uses the new commands and GUI names.
Detecting Conflicts
Before you can resolve conflicts, the Configuring program must detect the conflict and prepare the history files of the conflicting files for resolving. These two processes are described in this section. Detecting Conflicts during Bringover Update Transactions
Usually, the conflict resolution process begins when you attempt to put back files that have changed in both the parent and the child workspaces. The Putback transaction blocks the transfer of files from the child to the parent because the version of the file from the child will overwrite changes made in the parent. Preparing Files for Conflict Resolution
When a conflict is encountered during a Bringover Update transaction, the Configuring program takes special steps to prepare that file so that you can resolve the conflict.
Access to the three deltas (common ancestor, parent, and child) in the child enables you to use the Configuring Resolve transaction and the Merging program to compare the parent and child deltas -- both to their common ancestor, and to each other.
Note - The Versioning program enables you to view graphical depictions of SCCS delta histories (including branches).
In addition to merging deltas, the Configuring program adds the name of the conflicted file to the child's Codemgr_wsdata/conflicts file. The conflicts file is a text file that contains the names of all files in that workspace with unresolved conflicts.
The stage is set for you to resolve the conflicts using the Configuring Resolve transaction.
As previously mentioned, when the Configuring program detects a conflict during a Bringover Update transaction, it does the following:
Merged changes between workspaces x and y |
Merging displays two text files (the parent and child deltas) for side-by-side comparison, each in a read-only subwindow. Beneath them, Merging displays a subwindow that contains a merged version of the two files. The merged version contains selected lines from either or both deltas and can be edited to produce a final merged version.
Each delta in each of the top windows is shown in comparison to the common ancestor delta:
Lines in each descendant are marked according to their relationship to the corresponding lines in the common ancestor:
The difference on which Merging is focusing at any given time is called the current difference. The difference that appears immediately later in the file is called the next difference; the difference that appears immediately earlier in the file is called the previous difference.
While focusing on a difference, you can accept a line from either of the original deltas, or you can edit the merged version by hand. When you indicate that you are satisfied with your changes (by clicking on a control panel button), the current difference is said to be resolved. After a difference is resolved, Merging changes the glyphs that mark the difference to outline (hollow) font. Merging then automatically advances to the next difference (if the Auto Advance property is on), or moves to another difference of your choice.
In summary, when used with the Configuring program, Merging activity is coordinated by the Resolve transaction window. The Configuring and Merging programs communicate bidirectionally through the ToolTalk service. The Configuring program extracts the parent, child, and common ancestor deltas and starts the Merging program, passing it the names of the files that contain the deltas to be merged. When you complete the merge process using the Merging Save button, the Configuring program creates a new delta in the file's SCCS history file that contains the "Merged Results" and removes the file name from the conflicts file.
In the next chapter we consider how to administer the TeamWare workspaces.