使用c#检入和检出ClearCase

本文关键字:ClearCase 使用 | 更新日期: 2023-09-27 18:02:22

基本上我正在做一个项目,我可以在clearCase中选择一个excel文档,并运行我的ribbon程序,该程序会更新表。我想在VisualStudio中做的是这样做,当你运行我的插件时,文档会被签出,但是当它运行完后,会被签入。

这可能吗?谢谢你的帮助。

使用c#检入和检出ClearCase

有一个非常强大的ClearCase命令工具,名为cleartool。这里是完整的参考ClearTool帮助

我建议您使用Process.Start()来触发签入/签出操作。语法可能非常简单,如:

cleartool checkout "filename"

另一个选择是使用ClearCase COM API。我不确定他们是否也有。net库。谷歌一下"ClearCase Automation Library (CAL)"。

事实上,它们以同样的方式完成同样的工作。只有两个顶级CAL对象可以用来执行cleartool子命令。其中之一就是Clearcase。

您可以使用CAL接口(Rational ClearCase自动化库),并从VB脚本(或Excel中的VB宏)调用适当的命令。

在这个CAL脚本示例中,您可以看到几种方法来做到这一点,包括创建一个cleartool对象。

Set CL = CreateObject("ClearCase.ClearTool")

下面是另一个例子,从VB脚本执行签出:

Dim CC As object
Dim Ver As object
Dim CheckedOutFile As object
On Error Resume Next
Set CC = CreateObject("ClearCase.Application")
'Return message regarding ability to connect to Clearcase
If CC Is Nothing Then
      MsgBox "NOTHING"
      Exit Sub
Else
      MsgBox "CONNECTED"
End If
'Find the Version of the ClearCase File
Set Ver = CC.Version("''view'gustaf-pc_localView'ScriptTest'testModel.mdl")
MsgBox "version = " & Ver
'Checkout file
Set CheckedOutFile = Ver.CheckOut(ccReserved, "test checkout")
If Err.Number <> 0 Then
        MsgBox "Checkout Error: " & Err.Description
Else
        MsgBox "Checkout successful"
End If

OP Berbies报告:

ClearCase.ClearTool checkingOut = new ClearCase.ClearTool(); 
string fileOut = @"fileName"; 
checkingOut.CmdExec(@"checkout """ + fileOut + @""""); 

然后在你签入的时候改变变量。

不幸的是,它不能与我之前所说的答案正常工作,因为它最终做的是添加另一个版本到你的分支,而不是在主分支中创建另一个版本,我用这个修复了这个问题:

    void GetVersions(string sourcefile)
    {
        ClearCase.CCElement element = m_CC.get_Element(sourcefile);
        if (element != null)
        {
            ClearCase.CCVersion latestVersion = null;
            FileInfo fi = new FileInfo(sourcefile);
            latestVersion = element.get_Version();
           if (latestVersion != null)
            {
                ClearCase.CCBranch branch = latestVersion.Branch;
                ClearCase.CCCheckedOutFile file = latestVersion.CheckOut(ClearCase.CCReservedState.ccReserved, "", false, ClearCase.CCVersionToCheckOut.ccVersion_SpecificVersion, true, false);
                string path = file.ExtendedPath;
            }
        }
    }
    void checkIn(string sourcefile)
    {
        ClearCase.CCElement element = m_CC.get_Element(sourcefile);
        element.CheckedOutFile.CheckIn("", true, sourcefile, ClearCase.CCKeepState.ccKeep);
    }

这样你就可以用你自己的分支来为主文档创建另一个版本。这在使用源代码管理时非常重要。