【发布时间】:2011-07-18 20:27:28
【问题描述】:
基本上我正在做一个项目,我可以在 clearCase 中选择一个 excel 文档并运行我的功能区程序来更新表格。我想在 VisualStudio 中做的是让文档在您运行我的插件时被签出,但在运行完成后将其重新签入。
这可能吗? 感谢您的帮助。
【问题讨论】:
-
优秀。我已将您的代码包含在我的答案中。
标签: c# database excel clearcase
基本上我正在做一个项目,我可以在 clearCase 中选择一个 excel 文档并运行我的功能区程序来更新表格。我想在 VisualStudio 中做的是让文档在您运行我的插件时被签出,但在运行完成后将其重新签入。
这可能吗? 感谢您的帮助。
【问题讨论】:
标签: c# database excel clearcase
ClearCase 有一个非常强大的命令工具,名为 cleartool。 这里是完整的参考ClearTool Help
我建议您使用 Process.Start() 来触发签入/签出操作。 语法可能很简单,例如:
cleartool checkout "文件名"
另一个选择是使用 ClearCase COM API。我不确定他们是否也有 .NET 库。 “ClearCase 自动化库 (CAL)”的搜索结果。
事实上,他们以同样的方式做同样的工作。只有两个顶级 CAL 对象可用于执行 cleartool 子命令。其中之一是 Clearcase.Cleartool 对象(它只有一个方法 CMDEXE)。
【讨论】:
您可以使用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 + @"""");
然后在您重新签入时更改变量。
【讨论】:
不幸的是,它不能与我之前所说的答案正常工作,因为它最终会向您的分支添加另一个版本,而不是在主分支中创建另一个版本,我用这个解决了这个问题:
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);
}
这样,您可以使用自己的分支重新检查它,为主文档创建另一个版本。这在使用源代码管理时非常重要。
【讨论】: