Как я могу взаимодействовать с ClearCase из Perl? - PullRequest
2 голосов
/ 16 февраля 2010

Мой проект нуждается в извлечении нескольких вещей из данных ClearCase с использованием сценария Perl в таблице Excel, а именно -
Давая две конкретные временные линии или две базовые линии.

  1. вся деятельность, связанная с этой базовой линией (заголовок столбца "активность")
  2. идентификатор владельца (заголовок столбца-владелец)
  3. все элементы, связанные с определенной деятельностью. (заголовок столбца - «подробности элемента»)
  4. Для каждого элемента связаны версии (заголовок столбца - «Версии»)
  5. для каждого элемента общее количество строк кода, общее количество добавленных строк кода, общее количество удаленных строк кода, общее количество измененных строк кода .. (заголовок столбца «Количество строк кода») , «добавлены строки кода», «удалены строки кода» и «изменены строки кода»)

Пожалуйста, помогите мне в этом ...

Ответы [ 3 ]

5 голосов
/ 16 февраля 2010

В основном сценарии 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.

Я бы посоветовал использовать для всех этих целей динамическое представление, поскольку оттуда можно получить доступ к любой версии файла (в отличие от представления моментального снимка).

2 голосов
/ 16 февраля 2010

Также, если вам нужно использовать perl с Clearcase, взгляните на модуль CPAN ClearCase :: CtCmd . Я бы порекомендовал использовать этот модуль perl для вызова команд clearcase.

0 голосов
/ 08 мая 2012

Для пакета CCCmd мне пришлось удалить двойные кавычки в подпрограммах RunCmd и RunCmdNoError, чтобы заставить его работать.

...