在ClearCase中,您可以使用“cleartool ls”列出目录的内容。
我的问题是我如何使用CAL(ClearCase Automation Layer)做同样的事情。我更喜欢COM API的原因是因为我不必解析“ls”的输出。
到目前为止,我能够成功获得VOB和View,但我没有找到任何列出内容的方法。
到目前为止我的代码:
IClearCase cc = new ApplicationClass();
CCVOB vob = cc.get_VOB("\\VOB-name");
CCView view = cc.get_View("ViewTag");
感谢您的帮助。
我在C#中为那些感兴趣的人写了VonC的答案。
string[] files = Directory.GetFiles("View path here", "*.*", SearchOption.AllDirectories);
foreach (string file in files)
{
try
{
CCVersion ver = cc.get_Version(file);
Console.WriteLine(ver.Path);
}
catch(Exception) {/*the file is not versioned*/}
}
答案 0 :(得分:1)
这可能是一个好的开始:
Set CC = Wscript.CreateObject("ClearCase.Application")
Set DirVer = CC.Version(".")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(DirVer.Path)
Wscript.Echo "Files under source control: "
For Each File in Folder.Files
On Error Resume Next
Set Ver = CC.Version(File.Name)
If Err.Number = 0 Then
Wscript.Echo Ver.ExtendedPath
End If
Next
使用ICCVersion
方法尝试访问文件版本的想法。如果它没有返回错误,那它确实是一个版本化的文件。
现在我知道该文件是版本化的,我该如何删除它(rmname)。
请勿使用RemoveVersion():
删除无可挽回的版本(相当于cleartool rmver
)
警告!这是一种潜在的破坏性操作。由于CAL在任何情况下都不会提示用户输入,因此在调用RemoveVersion
时没有确认步骤。调用RemoveVersion
相当于使用cleartool rmver
选项运行-force
。
而是使用RemoveName
界面中的 ICCElement
。