2010-02-24 1 views
2

Я знаю одно неловкое решение для этого TAKS будет:как найти все ярлыки для данного файла в ClearCase

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

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

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

+0

@Haiyuan: только что завершил мой ответ на список * все * ярлыки файла. Я не боюсь, что «встроить» решение. – VonC

ответ

5

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

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

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

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

Варианты:

  • %Cl
    Макс этикетки: Определяет максимальное количество меток для отображения с параметром макс поля ширины (см Specifying 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 добавляет (с комментариями):

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

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

Это, как говорится, не кажется, что будет решение «встроенный» и некоторые синтаксический участвует:

например (который немного короче, чем версия OP, но по-прежнему базируется на cleartool ls):

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

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

или только с динамическим видом:

cd m:/myView/path/to/[email protected]@ 
# list all files, not directories: the files are the labels 
dir /B /A-D 
+0

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

+0

@ onaclov2000: не уверен в downvote, но я расширил свой ответ, чтобы обратиться к запросу «список всех меток». – VonC

+0

Я поддержал вас из-за вашего обновления! жаль, что это не наступило раньше, я снова столкнулся с этим вопросом во время поиска google – onaclov2000

2

В статье IBM "Additional examples of the cleartool find command" является отличным источником находят запрос.
Для расширения на "lsvtree" бит упомянутой VonC в his answer, у вас есть:

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

Windows:

cleartool find . -type f -exec "cleartool lsvtree -a %CLEARCASE_PN%" | findstr 
"(" 
./[email protected]@/main/1 (LABEL100, LABEL99, LABEL98, LABEL97) 
./[email protected]@/main/BR1/1 (REL2) 
./[email protected]@/main/1 (REL1) 

UNIX/Linux:

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

./[email protected]@/main/1 (LABEL100, LABEL99, LABEL98, LABEL97) 
./[email protected]@/main/BR1/1 (REL2) 
./[email protected]@/main/1 (REL1) 

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

+0

Я взял на себя смелость расширить свою первоначальную ссылку. StackOverflow - это сайт Q & A, целью которого является включение как можно большего количества информации в каждый ответ, чтобы ограничить зависимость от внешних источников (например, эта ссылка, которая может истекать/быть изменена в любое время). +1 кстати. – VonC