ClearCase: список содержимого каталога (ls) с использованием CAL
-
06-07-2019 - |
Вопрос
В ClearCase вы можете перечислить содержимое каталога, используя " cleartool ls ".
У меня вопрос, как я могу сделать то же самое, используя CAL (ClearCase Automation Layer). Причина, по которой я предпочитаю COM API, заключается в том, что мне не нужно анализировать выходные данные < ls ".
Пока я могу успешно получить VOB и представление, но я не нашел никакого способа для отображения содержимого.
Пока мой код:
IClearCase cc = new ApplicationClass();
CCVOB vob = cc.get_VOB("\\VOB-name");
CCView view = cc.get_View("ViewTag");
Спасибо за вашу помощь.
Я написал ответ VonC на C # для интересующихся.
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*/}
}
Решение
Может быть, это хорошее начало:
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
для доступа к версии файла. Если он не возвращает ошибку, это действительно версионный файл.
Теперь я знаю, что файл имеет версию, как я могу удалить его (имя_пользователя).
Не используйте RemoveVersion () :
Безвозвратно удаляет версию (эквивалентно cleartool rmver
)
ПРЕДУПРЕЖДЕНИЕ! Это потенциально разрушительная операция. Поскольку клиентская лицензия не запрашивает ввод у пользователя ни при каких обстоятельствах, шаг подтверждения при вызове RemoveVersion
отсутствует. Вызов RemoveVersion
эквивалентен запуску cleartool rmver
с параметром -force
.
Вместо этого используйте RemoveName
из интерфейса ICCElement
.