В основном сценарии ClearCase Perl основаны на разобранных выходных данных системных команд и команд cleartool.
Сценарии основаны на cmd запуска команды cleartool, например , пакет CCCmd , и используются как:
use strict;
use Config;
require "path/to/CCCmd.pm";
sub Main
{
my $hostname = CCCmd::RunCmd('hostname');
chomp $hostname;
my $lsview = CCCmd::ClearToolNoError("lsview -l -pro -host $hostname");
return 1;
}
Main() || exit(1);
exit(0);
например.
Так что, когда у вас есть базовая структура Perl, все, что вам нужно, это правильные команды cleartool для анализа на основе директив fmt_ccase .
1 / все действия, связанные с этой базовой линией (заголовок столбца "активность")
ct descr -fmt "%[activities]CXp" baseline:aBaseline.xyz@\ideapvob
Это даст вам список действий (разделенных ',
').
Для каждого вида деятельности:
2 / идентификатор владельца (заголовок столбца-владелец)
ct descr -fmt "%u" activity:anActivityName@\ideapvob
3 / все элементы, связанные с определенной деятельностью. (заголовок столбца - «подробности элемента»)
Не уверен: действия могут перечислять свои версии (см. / 4), а не просто их элементы
4 / Для каждого элемента связаны версии (заголовок столбца - «Версии»)
Для данного вида деятельности:
ct descr -fmt "%[versions]CQp\n" activity:anActivityName@\ideapvob
5 / для каждого элемента общее количество строк кода, общее количество добавленных строк кода, общее количество удаленных строк кода, общее количество измененных строк кода .. (заголовок столбца «Количество строк кода» код "," строки кода добавлены "," строки кода удалены "&" строки кода изменены ")
Это может быть довольно длинным, но для каждой версии вы можете вычислить расширенный путь предыдущей версии и сделать diff.
Я бы посоветовал использовать для всех этих целей динамическое представление, поскольку оттуда можно получить доступ к любой версии файла (в отличие от представления моментального снимка).