Resolving Namespace Conflicts
This topic discusses conflicts that can occur when two developers change the pathname of an element. The same kind of conflicts can occur when two developers change the target element an element link or the target pathname of a symbolic link. The same dialogs appear in both kinds of conflict situations.
Kinds of Namespace Changes
AccuRev distinguishes between these two kinds of namespace changes to an element (file, directory, or link):
Rename: Changing the element's simple name (or "leaf name"):
cmds.java --> commands.java<![CDATA[ ]]>
Move: Relocating the element to another directory in the depot:
cmd_intf/commands.java --> cmd_intf/utils/commands.java<![CDATA[ ]]>
Note: What about renaming the directory in which a file resides?
Renaming of the parent directory is not the same as moving a file to another directory. AccuRev considers this renaming:
cmd_intf --> cmd_interface
... to be change to the parent directory element, but not a change to the file elements within it. (This change to the parent directory has the side-effect of changing the pathnames of all elements below it.)
In a parallel development environment, namespace changes can overlap in the same way as content changes. For example, you and a colleague might rename the same file in your workspaces:
cmds.java --> commands.java
cmds.java --> all_commands.java
If your colleague promotes his change first, then the file will get (overlap) status in your workspace. Before you can promote the file, you must use the Merge command to resolve the namespace conflict.
In general, your work on a file element can overlap with a colleague's work in three ways:
- You both have made a namespace change of the rename kind.
- You both have made a namespace change of the move kind.
- You both have made a content change to the file.
Any combination of these kinds of changes is possible. AccuRev first prompts you to resolve the namespace conflicts, if any, as described below. Then, it passes control to the Merge tool (or another tool that you've configured), to perform the content merge.
Resolving a "Rename" Conflict
A namespace conflict of the rename kind occurs when two versions' simple names differ from the simple name of their closest common ancestor (and also differ from each other).
AccuRev allows you to resolve the conflict by taking any of the three simple names.
Resolving a "Move" Conflict
A namespace conflict of the move kind occurs when two versions are located in different directories than their closest common ancestor (and also different directories from each other).
AccuRev allows you to resolve the conflict by choosing any of the three parent directories as the file's location.
Note: What are the "EID" annotations?
AccuRev tracks directory elements by their immutable element-IDs (EIDs). It lists the parent directories' EIDs in this dialog to help you identify them; the directories might have different names/pathnames in different streams.