使用C#进行ClearCase的签入和签出

3
基本上,我正在进行一个项目,在这个项目中,我可以选择一个在ClearCase中的Excel文档,并运行我的功能表程序,将表格更新到该文档中。在VisualStudio中,我想做的是在运行我的插件时,使文档被签出,但完成运行后再进行签入。
这是否可能?
感谢您的帮助。

太好了。我已经在我的回答中包含了你的代码。 - VonC
3个回答

2

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

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

cleartool checkout "filename"

另一个选项是使用ClearCase COM API。我不确定他们是否也有.NET库。只需搜索“ClearCase Automation Library(CAL)”即可。

实际上,它们以相同的方式执行相同的工作。只有两个顶级CAL对象可以用于执行cleartool子命令。其中之一是Clearcase.Cleartool对象(它只有一个方法CMDEXE)。


2
您可以使用 CAL 接口(Rational ClearCase Automation Library),并调用适当的命令从 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

发帖者Berbies报告:

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

然后只需更改变量以便您将其检查回来。

1

很遗憾,它与我之前提到的答案不兼容,因为它最终会在您的分支中添加另一个版本,而不是在主分支中创建另一个版本。我通过以下方式解决了这个问题:

    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);
    }

这样,您可以使用自己的分支将其检查回来,以创建主文档的另一个版本。在使用源代码控制时,这非常重要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接