views:

86

answers:

2

I am working on new project visual studio 2008 and ClearCase 7.01 (base ClearCase) as source control.
I am very new to .Net environment, my questions:

  1. For deployment, how to get the source from clear case?
    My idea is to create a branch , apply a label to this and use Nant or Cruise Control for compilation.

  2. For a small work in one source, (change request) do I need to branch all sources and work on that branch?
    If branching is not required how do I get all the source for deployment

  3. How to apply labels to all sources?
    Is there any way to validate that the label is attached to all objects

Thanks in advance

A: 

How many developers working on the same codebase?

I have one main branch.

When code is pushed to a server, I label all the current code in ClearCase, and lock the label.

If I need to fix a problem on a server, but have made significant changes since that label that can't be pushed to the server, I branch from that label, fix the change, push to the server, label what was pushed, and then merge that back to my main branch.

So, development gets one main branch, and emergency bugfixes may get a second (temporary) branch.

Dean J
A: 
  1. The label is enough when pushing to the server. Locking the label, as recommended by Dean J, is a good idea since, contrary to the UCM baselines, a label could be moved from one version to another.

  2. a branch is for isolating a development effort not compatible with the current one. If your change request is within the main development flow, you do not need a branch.
    But if it is for a given label, branching from that label allows you to made any fix necessary while still developing on the main branch.
    Now, as explained in "What are the basic ClearCase concepts every developer should know?", ClearCase use a cheap branching mechanism. You only specify you will make a branch in case of a modification. But the fact to create a branch does not apply to any source right away.

Your config spec will look something like:

element * CHECKEDOUT
element * .../MY_BRANCH_FOR_FIX/LATEST
element * MY_LABEL -mkbranch MY_BRANCH_FOR_FIX
element /main/0 -mkbranch MY_BRANCH_FOR_FIX
element /main/LATEST

3/

  • a label is first declared (ct mklbtype), then applied (ct ùklabel).
    But you cannot guarantee it will be applied on all files of a given structure (only UCM baselines on a UCM component can have that)

the directory version selected by the view's config spec is used for the recursion.

If your config spec does not select the right version, or no version at all for a specific element, it will not get a label.
Checked-out versions are not eligible for a label either.
So you need to have a dynamic view you only use for that (no fear of missed checked-out versions, since you only use it to mklabel), with a valid config spec.

VonC