views:

299

answers:

1

We have a project and are about to add a new piece of functionality to otherwise stable codebase without any major changes going on except defect fixing. The plan is not develop the new feature separately for a while (probably a month) doing intermediate builds and testing and as the feature is finished and the quality is acceptable merge the code of the new feature in the main branch.

The question is what of the following two scenarios is better in terms of Clear Case:

1) Creating a new project based on a baseline in the integration stream of the current project, developing the new feature in this separate project with intermediate deliveries to the integration stream of the new project and build from the integration stream. And eventually delivering the changes from the integration stream of the new project to the main project (to dev or int).

2) Using a hierarchy of streams in the main project: creating a child stream of the integration stream in the main project (lets call it temp_int) and a child stream of temp_int (lets call it temp_dev). Developing the new feature in temp_dev, with periodic deliveries to temp_int and builds from temp_int and then delivering the new feature from temp_int to the main integration stream.

Thanks

+1  A: 

The question whether you need to create a new project or make a sub-stream is a classical one.

In my opinion, both options are fairly equivalent.

The only significant difference is the foundation baseline you will be able to pick when creating a new stream for this particular development effort:

  • for a sub-stream, you will only be able to select a baseline produced on the parent stream.
  • for the main stream of a new project, you will be able to select any baseline you want.

Other than that:

  • a new project offer a new space for isolating several stream in a coherent container. But if you need to include some of minor evolutions of the stable code done during the new feature development, delivers will be in order.
  • a sub-stream allows to clearly visualize the end-client once the development are finished: the deliver will be a natural operation for merging to the parent stream. Plus, periodic rebase are possible from the parent stream to your development stream in order to keep it up-to-date.

So if you have only one stream with a clear deliver to make, the sub-stream option is enough.
If your development ends up being more complicated than foreseen, a project is nicer.

VonC