Handling of rename in merge/join Jonathan S. Shapiro (shap@eros-os.org)
Mon, 17 Apr 2000 23:54:50 -0400

In a merge:

All renames in the trunk delta are applied to the branch, with the following "collision resolution" rules.

  1. If no rename has occurred in the branch, the rename is applied in the branch.
  2. If a rename has occurred in the branch, then the rename in the branch is unchanged, but the renamed file in the trunk becomes the "top trunk" version for the renamed file in the branch.

What this means:

If A is renamed to B in the trunk and

A is renamed to B in the branch then

trunk.B becomes the "ancestor" of branch.B

If A is renamed to B in the trunk and

A is still called A in the branch then

branch.A is renamed branch.B
trunk.B becomes the "ancestor" of branch.B

If A is renamed to B in the trunk and

A is renamed to C in the branch then

trunk.B becomes the "ancestor" of branch.C

In a join:

The only possible ambiguity arises from differing renames (the last case above). When a join occurs in this case, trunk.n.B will be renamed to Trunk.n+1.C.