Parallel Development Using Dimensions CM

Streams

The recommended way of doing the parallel development in Dimensions CM is to use streams. Streams represent branches of development. They contain files and folders, keep track of their revisions, history and pedigree.

Different teams may use separate streams for parallel development. A stream may be created based on a mainline stream or project and merged to it later.

You can work with streams using the command line, in the desktop and web clients, the Windows Explorer or any of the IDE integrations.

Topic Streams

Topic streams are private development branches by default only visible to the originator. With topic streams you can:

  • Isolate work from an existing public stream
  • Hide the changes until they are ready to be merged back into a public stream
  • Create a backup of your local changes in the repository when you need to switch to other task. This is called shelving
  • Use pull requests to automatically integrate changes to the parent stream

 Projects

Projects may also represent a branch of development. Unlike streams they employ the exclusive lock model, where developers request write access for a file before making changes. Projects are more suitable for: managing non-software assets or large binary files, work in a regulated environment or for using remote replication.

Different people may need to work on the same files for different purposes. In this case, projects use version branches to separate concurrent revisions of the same file, and those revisions need to be consolidated (merged) on a file level.

Stream Relationships

  • Items. The stream contains a list of item revisions, it owns items
  •           Requests. By default any created request is related to a stream, but it may be not related to a stream. The requests may be listed in a stream inbox or catalog view and used for delivering changes. A stream may be configured to always require a request for delivering changes
  •           Other streams/projects. The stream may be based on another stream or a project or be parent to a child stream.
  •           Baselines. Baselines are snapshots of a stream state at a particular time. Baselines are created based on a stream or may be used by a stream.

 Parallel Development

Streams enable interactive update-modify-deliver-merge process for developers.

  •          Use Update to get content from the remote repository to a local work area
  •          Make local changes, build and test
  •          Use Deliver to commit changes to a repository
    •         Streams maintain the single line of descent for item revisions, this ensures that files in the repository don’t have revisions with conflicting content
    •         Developers don’t obtain an exclusive lock for files, and that allows to work on the same files in parallel
  •          Use Merge to reintegrate the changes between the development branches. 
    •      Interactive merge allows to resolve any conflicting content
    •      Pull requests automate merging from a topic stream to a parent stream

 

 

 

Tags:
Continue reading
68 Hits
0 Comments

Cherrypicking (Part 1): Comparing Cherrypicking with Regular Request Merge

Cherrypicking (Part 1): Comparing Cherrypicking with Regular Request Merge

Have you ever been in a situation where a fix applied to one stream was urgently required in another?

This often happens when a bug fixed in a future release is escalated and needs to be included in a patch release. Each patch typically has its own stream so you need to merge the fix from the feature or mainline stream to the patch. To restrict the merged code to the exact bug-fix you need to cherrypick the changes carefully.

Dimensions CM 14.1.x and earlier supports regular request merge but not cherrypicking.


Let’s see the difference in a simple example with two streams...

Recent comment in this post
cs joshi
.
Tuesday, 25 July 2017 6:06 AM
Continue reading
6072 Hits
1 Comment

Recent Tweets