It's all about the answers!

Ask a question

EWM - 7.0.2 - Best way to split an SCM stream with multiple components into multiple streams?

Glyn Costello (13837) | asked Feb 28 '23, 12:02 p.m.

We've been working on multiple components under a single development stream, however, we've started to get a point where we could do with separate streams for some of these components.

What's the best practice way to move some of these components into their own stream?
- Component 1
- Component 2
- Component 3

- Component 1

- Component 2

- Component 3

3 answers

permanent link
Ralph Schoon (63.1k33646) | answered Feb 28 '23, 12:32 p.m.
edited Feb 28 '23, 12:38 p.m.

I chose to reword my first answer. My understanding is:

You do not split a stream. The stream does not "contain" anything.

Components contain the history of the elements under SCM. Streams only select the configuration of all the current states of all SCM items in all components it tracks. Components can be referred to by multiple streams, the streams select which item states.

So, what do you want to achieve?

If you want to make sure to create a new stream that contains the same component baseline another stream selects, you have multiple options. You can create a snapshot or baselines and then create new streams and add the component baselines.

You can also duplicate a stream, if I am not mistaken in eclipse and then remove the components you don't want.

There is no best option with as little context you gave.

Also note, once you have multiple streams there can be multiple histories for the items in the components referred to by different streams.

Glyn Costello commented Feb 28 '23, 12:42 p.m.

We have a system built of multiple components, but we're starting to realise we may need to branch certain 'components' into different configurations/variants (like in GCM) and possibly re-use different variants of components in different top level components (again, like in GCM).

Ralph Schoon commented Mar 01 '23, 2:29 a.m.

Glyn, I think you need to look into the documentation and articles and understand EWM SCM better. It is impossible to explain all that here. 

You can think of streams to be branches the components in a stream track the history and changes for the data in them. You can have the same component in several streams and work on the data represented in the component. If you change a file F1 in component C1 in stream S1 and deliver and you do a different change to the file F1 in component C1 in stream S2 and deliver you have created two different histories.

The component contains all the SCM historical data for the elements it contains. The stream selects the state of the historical data for the component it contains.

permanent link
Kristofer Carlson (533) | answered Mar 06 '23, 10:14 a.m.
edited Mar 06 '23, 10:17 a.m.
As I understand it, products or systems have components and components have streams. I could be wrong, as IBM support documentation is uniformly poor. However, I found these Jazz articles quite helpful.
Patterns for stream usage:
Defining your component strategy:

Once you've read those, this will be the more useful for you.
Multiple Stream Development:

Ralph Schoon commented Mar 06 '23, 10:34 a.m.

In Jazz SCM, a stream selects the configuration of one or more components. Components contain the scm data for the folders or Eclipse projects. You check in changes into the component in the stream. To Baselines are created on components in a stream to select a consistent set of versions of files. 

The first articles are for ETM/DNG and not EWM. The assumption was the software developers are using SCM systems for years and do not have to change. is the SCM FAQ.

Kristofer Carlson commented Mar 06 '23, 11:17 a.m.

I recognize that SCM is different from RM. However, one would expect that the definitions of Components and Streams would be the same across the different modules. If (as you say) they are not, then IBM didn't do a very good job of systems design.

Ralph Schoon commented Mar 06 '23, 11:21 a.m.

EWM SCM is way older than global configuration management and ETM/RM configuration management. I am also not sure how to bridge that gap.

In EWM SCM, think of component being available to subdivide the software in separate groupings e.g. architectural or layers. 

permanent link
Bernd van Oostrum (21725371) | answered Mar 08 '23, 8:31 a.m.
edited Mar 08 '23, 8:53 a.m.

 Hi Glyn,

It is not possible to give any best practice without knowing the context. Are these mainframe sources? Java sources? A combination?

If there are references between sources in component 1 and component 2 it could be an advantage to have both in one stream.

In general, a recommendation could be to create a component per functional domain, and create the stream based on that. Optionally each stream could have a "public common" component, containing the interfaces to the sources of the other stream.

As I said, there is no best practice, it depends on your context...

Bernd van Oostrum

Your answer

Register or to post your answer.

Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.