NOTE: 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 (element-link element) An element whose contents is a pointer to another element, which must be in the same depot. The target element can be a directory element, a file element, another element link, or a symbolic link. or the target pathname of a symbolic link (symbolic-link element) An element whose contents is a pathname. The pathname can point to AccuRev data (that is, a location inside a workspace) or non-AccuRev data.. The same dialogs appear in both kinds of conflict situations.
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
Move: Relocating the element to another directory in the depot::
cmd_intf/commands.java --> cmd_intf/utils/commands.java
Notes (click to view):
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 Version X, in a workspace or stream, has '(overlap)' status if the parent stream's current version of the element contains changes that are not reflected in version X. (That is, the parent stream's version is not an ancestor of version X.) Such a version cannot be promoted to the parent stream; the user must create a new version with a merge operation, combining version X with the parent stream's version. The new, merged version can then be promoted. Similarly, an overlap can exist between the versions in two dynamic streams. See deep 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.
A namespace conflict of the rename kind occurs when two versions' simple names differ from the simple name of their closest common ancestor (of two versions of an element) The most recent version that is an ancestor of two specified versions. Used in a merge operation to minimize the amount of work required to combine the contents of the two specified versions. See merge, version graph. (and also differ from each other).
AccuRev allows you to resolve the conflict by taking any of the three simple names.
A namespace conflict of the move kind occurs when two versions are located in different directories than their closest common ancestor (of two versions of an element) The most recent version that is an ancestor of two specified versions. Used in a merge operation to minimize the amount of work required to combine the contents of the two specified versions. See merge, version graph. (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.
Notes (click to view):
What are the "EID" annotations?
AccuRev tracks directory elements by their immutable element-IDs The unique, immutable integer identifier by which AccuRev tracks the changes to a particular file element or directory element. An element's name or pathname can change, but its element-ID never changes. (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.