Как найти все элементы в ветви с версией LATEST, к которой не применена метка? - PullRequest
3 голосов
/ 04 марта 2011

Как сказано в заголовке: я хотел бы найти все элементы, которые находятся на ветке (например, DEV_BRANCH) с версией LATEST, но к которой еще не применен какой-либо ярлык.

Я знаю, как найти элементы, к которым не применена особая метка (как в:

Но я не знаю, как найти элементы, на которые не нанесен любой ярлык.

Заранее спасибо, Микаэль

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

Самый простой способ:

  • найти все элементы с версией в правой ветке
cleartool find . -type f -ele "version(.../myBranch/LATEST)" -print
  • запросить lsvtree и grep для открывающей круглой скобки (имеется в виду хотя бы одна метка)
cleartool find . -type f -ele "version(.../DEV_BRANCH/LATEST)" \
-exec "cleartool lsvtree \"%CLEARCASE_PN%\"" | findstr "DEV_BRANCH\\[0-9]* ("

Вам нужен шаблон в вашей находке (или grep в Unix), чтобы обнаружить:

  • DEV_BRANCH
  • a '\'
  • номер версии
  • пробел, за которым следует '(' (имеется в виду одна или несколько меток)

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

Я не знаю однострочного решения, которое бы сразу перечисляло элементы без меток в данной ветке ...

1 голос
/ 06 марта 2011

Спасибо VonC,

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

cleartool find . -type f -ele 'version(/main/DEV_BRANCH/LATEST)'
-exec 'cleartool describe -fmt "%n labels:%l\n" $CLEARCASE_PN' | grep labels:\w*$

Мне кажется, это помогает мне.Я просто grep для всех элементов, которые дают строку, где нет ничего после строки "label:".

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

...