【问题标题】:ClearCase checking in and out using c#ClearCase 使用 c# 签入和签出
【发布时间】:2011-07-18 20:27:28
【问题描述】:

基本上我正在做一个项目,我可以在 clearCase 中选择一个 excel 文档并运行我的功能区程序来更新表格。我想在 VisualStudio 中做的是让文档在您运行我的插件时被签出,但在运行完成后将其重新签入。

这可能吗? 感谢您的帮助。

【问题讨论】:

  • 优秀。我已将您的代码包含在我的答案中。

标签: c# database excel clearcase


【解决方案1】:

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

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

cleartool checkout "文件名"

另一个选择是使用 ClearCase COM API。我不确定他们是否也有 .NET 库。 “ClearCase 自动化库 (CAL)”的搜索结果。

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

【讨论】:

    【解决方案2】:

    您可以使用CAL interface(Rational ClearCase 自动化库)并调用适当的命令from a VB script(或Excel 中的VB 宏)。

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

    Set CL = CreateObject("ClearCase.ClearTool")
    

    这里是another example,从 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 + @""""); 
    

    然后在您重新签入时更改变量。

    【讨论】:

      【解决方案3】:

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

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

      这样,您可以使用自己的分支重新检查它,为主文档创建另一个版本。这在使用源代码管理时非常重要。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-14
        • 1970-01-01
        • 2017-08-13
        相关资源
        最近更新 更多