ClearCase:使用CAL列出目录(ls)的内容

时间:2009-06-17 16:35:18

标签: com list automation directory clearcase

在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*/}
}

1 个答案:

答案 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