tags:

views:

1303

answers:

2

I am trying to put version information to my C# GUI framework retrieved from the latest ClearCase label. This was originally done from Visual Soursafe as below.

vssDB = new VSSDatabaseClass();
vssDB.Open( databaseName, "vssadmin", "vssadmin" );
VSSItem item = vssDB.get_VSSItem( @"$\BuildDCP.bat", false );
foreach(VSSVersion vssVersion in item.get_Versions(0))
{
  // Pull the first non-blank label and use that
  if ( vssVersion.Label != "" )
  {
    labelID = vssVersion.Label.ToString();
    break;
  }
}

I am trying to do something similar using ClearCase since we changed our source code control from VSS to CC. Any help would be greatly appreciated.

Thanks!

A: 

I really wish that the COM interfaces had better documentation, or were more obvious. Or that the code to ClearCase Explorer or Project Explorer were open source.

I've done a few cool things, but I pretty much started by adding COM references to my C# project, and then started screwing around with the interfaces I found.

Good luck!

Matt Cruikshank
I so agree with you. Being with java projects, I completely encapsulated the cleartool Command-Line-Interface with a set of java object, making my own API....
VonC
+1  A: 

I believe this could be better achieved through a script, which would be called from your C# program.

But you may be able to directly call some COM objects, through the CAL interface provided with ClearCase.

The documentation for the interface can be accessed through ClearCase help (Start>Programs>Rational ClearCase>ClearCase Help), where there's an entry for "ClearCase Automation Library (CAL)". An alternate path is to look in the ClearCase/bin directory for "cc_cal.chm".

In VB, with CAL API, that would give something like:

Dim CC As New ClearCase.Application 
Dim labelID As String
Set aVersion = CC.Version("[Path-To]\BuildDCP.bat");
Set someLabels = Ver.Labels;
If (someLabels.Count > 0) Then 
    ' the first label listed is the most recently applied
    labelID = someLabels.Item(1).Type.Name
EndIf
VonC