Stream merge FAQ

This topic provides answers to some of the common questions about merging streams.

Can I update from a stream not associated with the work area?

Use Update to update a work area from its associated stream. Use Merge to merge changes from another stream, a baseline, or a request.

Back to top

Can I merge from an older stream version?

Yes. Dimensions CM 14.x introduces the concept of stream versions. You can select any version of the source stream to merge from.

Back to top

Can I merge into an older version of a stream?

No. Streams assume a single line of descent and no internal branching. To work on, or merge into, a specific stream version, create a new stream based on that version of the stream.

Back to top

Can I ignore specific files or folders and merge them later?

You can limit the scope of a merge operation to specific folders or manually ignore files or folders. But you may be required to resolve some refactoring conflicts again during subsequent merge operations.

Back to top

Should I update a work area before I merge?

To minimize the possibility of unexpected conflicts when delivering merged changes, it is best practice to always update a work area before merging, or create a new work area for the merge.

You can avoid conflicts when delivering by locking the stream you are merging to. But this may not be possible when multiple developers are working on a stream in parallel.

Keeping your work area up to date also enables you to safely build and test the most recent stream content before delivering merged files.

Back to top

Streams have the item in different places, but the merge doesn't detect the difference, why?

The previous resolution of the path conflict for this item was probably Use local. Subsequent merges use this resolution and do not detect a difference. If you merge the changes in the opposite direction, the path is applied without indicating a conflict, as it was previously resolved.

To avoid this situation when you are not certain what the final path for a conflict should be, choose the resolution Ignore. You can resolve the conflict during a subsequent merge.

If you have already merged an item and applied the resolution Use local, to change the resolution at the next merge, rename the file locally in your work area.

This issue also occurs with other types of refactoring conflicts, for example, an item is deleted in one stream and moved in another.

Back to top

I have merged streams, but there are still differences, why?

A merge operation is performed in one direction. You apply the changes from one stream to another. To synchronize streams, perform merges in both directions in separate operations. For details, see Merge conflicts and synchronize streams.

Check if the resolution Ignore, or the wrong exclusion filters, have been used during a merge or deliver operation.

Back to top

Locally added file conflicts with a repository file of the same name

When merging two streams, multiple conflicts may be detected with the description "File was locally added and conflicts with a new repository file of the same name". The conflicts persist even after streams have been merged.

This problem occurs when files with the same name were delivered in two independent streams, for example, by copying them using Windows Explorer to separate work areas (or another method that does not use a Dimensions CM client).

The correct way to copy or import files between streams is to use the Merge operation. Otherwise Dimensions CM treats these files as different items with their own history and pedigree, even though their paths overlap.

To resolve this conflict, delete one of the local copies of the duplicate item, deliver the deletion to the repository, and then import the same item from the other stream using merge.

Back to top

Why my custom merge tool overwrites changes with older contents?

If you often overwrite changes with older contents when you merge files in streams using your preferred file merge tool, this may be because you use a two-way merge tool. Typically such tools only display repository and local file revisions and cannot identify which conflicting changes to accept during conflict resolution, especially when changes are applied by other developers.

The best practice is to use a three-way merge tool that can display the common ancestor revision of merged files and compare the contents of the ancestor with those of the merged files.

Verify that your three-way merge tool is configured to display all files, not just the common ancestor.

Back to top

I resolved a conflict using Merge, but the work area file is unchanged, why?

In the Merge wizard, until you click Merge to perform a merge operation, merged files are stored in a temporary location to protect your work area from partially merged results.

Back to top

When do I use the Apply Repository Date and Time option?

Many build systems rely on the modification timestamp of a file to decide if the file should be rebuilt. To ensure that imported or merged revisions have their modification time updated and are captured by the build, do not select this option.

Select the Apply Repository Date and Time option only if you need to preserve the original (repository) date and time of the merge.

Back to top

Can I use work areas populated with version 12.2.2 or earlier?

Before you upgrade Dimensions CM from 12.2.2 or earlier to 14.5, deliver any local changes to your repository.

After upgrading, use new work areas populated by 14.5 clients. If you cannot recreate new work area, you can convert your pre-14.5 work area by running the recursive non-interactive Update or Get operations. You cannot merge into a work area populated by a pre-14.5 client until it is converted to 14.5.

If you cannot convert a work area that contains local changes conflicting with a repository, do one of the following:

  • Create a new work area using a 14.5 client and reapply your changes there.

  • Use a 12.2.2 client to merge and deliver the local changes.

Back to top

Can I restore content deleted by mistake and not detected during merge?

You can restore content deleted by mistake from another stream or baseline. Use the MERGE command with the /OVERWRITE parameter to override the changes in the stream associated with the work area using the content of the stream you are merging from.

For example, to restore the test folder in the MY_FEATURE stream from the MY_FEATURE_SPRINT8 baseline, use the following command:

Copy code
MERGE /USER_DIRECTORY=C:\MY_FEATURE /DIR=test /BASELINE=MY_FEATURE_SPRINT8 /OVERWRITE

Back to top

See also: