Как найти все элементы в ветке с версией LATEST, к которой не применена метка?

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

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

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

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

2 ответа

Решение

Простейшим способом было бы:

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

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

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

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

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

Спасибо VonC,

используя ваш подход к поиску паттеров, я понял, что могу использовать description вместо 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:".

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

Другие вопросы по тегам