как найти все метки для данного файла в открытом регистре - PullRequest
2 голосов
/ 24 февраля 2010

Я знаю, что одним неловким решением для этого будет:

  • сначала используйте ct ls, чтобы получить полную информацию о версии файла
  • и передайте информацию о версии в скрипт синтаксического анализа, чтобы получить метки файла.

Но я думаю, у ClearCase должно быть встроенное решение для этой задачи без поддержки каких-либо внешних сценариев.

Пожалуйста, помогите мне, если вам случится знать "встроенное" решение для задачи.
Заранее спасибо.

Ответы [ 2 ]

6 голосов
/ 24 февраля 2010

fmt_ccase содержит все строки формата для различных элементов ClearCase.

Для версии файла вы можете:

 cleartool descr -fmt "%l\n" /path/to/a/version

%l
Ярлыки : Для версий все прикрепленные этикетки; пустая строка в противном случае.
Метки выводятся в виде списка через запятую, заключенного в скобки .
Символ <SPACE> следует за каждой запятой.

Варианты :

  • %Cl
    Макс. Меток : укажите максимальное количество меток для отображения с параметром max-field-width (см. Указание ширины поля ).
    Если имеется больше меток, к выводу добавляется «...».
    Если max-field-width не указано, максимальное значение по умолчанию равно 3.
  • %Nl
    Без запятых: Подавить скобки и запятые в выводе списка меток;
    отдельные метки только с пробелами .

Таким образом, результат может быть:

Labels: (Rel3.1C, Rel3.1D, Rel3.1E)
Labels without commas or parens: Rel3.1C Rel3.1D Rel3.1E

В обоих случаях вам все еще нужно проанализировать результат, но по крайней мере выходные данные могут содержать только метки, как в:

Rel3.1C Rel3.1D Rel3.1E

onaclov2000 добавляет (из комментариев):

Единственная проблема с этим заключается в том, что вы захватываете ярлык на определенной версии файла.
Учитывая, что ветки и т. Д. Могут существовать, мы должны иметь возможность получать ВСЕ метки в файле.
Если вы используете графическое дерево версий и выбираете инструменты -> «найти», вы можете увидеть ALL метки, прикрепленные к этому файлу.
Есть ли в cleartool общая команда, которая будет возвращать результаты "locate" или "contents"?

lsvtree (графическое дерево версий) отображает метки всех версий элемента, видимых в данный момент при просмотре, когда вы нажимаете «Имя метки»

При этом, похоже, нет "встроенного" решения, и требуется некоторый анализ:

Например (который немного короче, чем версия OP, но все еще основан на cleartool ls):

ct ls -l addon.xml@@|grep version|gawk "{gsub(/^version.*@@\\\\/,\"\",$0) ; gsub(/ \ [.*/,\"\",$0); print $0}"

(синтаксис GnuWin32)

или, только с динамическим просмотром:

cd m:/myView/path/to/addon.xml@@
# list all files, not directories: the files are the labels
dir /B /A-D 
3 голосов
/ 19 января 2011

Статья IBM " Дополнительные примеры команды поиска cleartool " является отличным источником для запроса поиска.
Для расширения бита "lsvtree", упомянутого VonC в его ответ , у вас есть:

Чтобы найти все элементы с любой меткой :

Windows:

cleartool find . -type f -exec "cleartool lsvtree -a %CLEARCASE_PN%" | findstr
"("
./hello.c@@/main/1 (LABEL100, LABEL99, LABEL98, LABEL97)
./foo.xml@@/main/BR1/1 (REL2)
./bar.o@@/main/1 (REL1)

UNIX / Linux:

cleartool find . -type f -exec 'cleartool lsvtree -a $CLEARCASE_PN' | grep "("

./hello.c@@/main/1 (LABEL100, LABEL99, LABEL98, LABEL97)
./foo.xml@@/main/BR1/1 (REL2)
./bar.o@@/main/1 (REL1)

Находит только метки для версий, выбранных в данный момент в представлении, но вы можете использовать lsvtree часть для grep всех версий файла с метками.

...