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

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

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

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

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


person Micke P    schedule 04.03.2011    source источник


Ответы (2)


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

  • найти все элементы с версией в правой ветке
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]* ("

Вам понадобится шаблон в вашем find (или grep в Unix) для обнаружения:

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

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

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

person VonC    schedule 04.03.2011

Спасибо VonC,

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

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

person Micke P    schedule 06.03.2011
comment
+1 по общей идее, но мне интересно, будет ли это использовать только элементы grep с версией в ПОСЛЕДНИЙ без каких-либо меток, в отличие от элементов с любой версией в данной ветке с метками ... Так что это может быть невозможно за один проход, как вы предлагаете, но за два прохода, как я упоминал в своем ответе. - person VonC; 06.03.2011
comment
@VonC Ни то, ни другое. Он (почти) ищет версию, выбранную активной спецификацией конфигурации каждого элемента, у которого есть версия на DEV_BRANCH, к которой применены метки. Это потому, что $ CLEARCASE_PN возвращает имя пути без @@ в конце, что означает, что он будет ссылаться не на элемент, а на версию. Кроме того, grep неверен, потому что он не использует -i, а метки должны начинаться с заглавной L, а \ w * является избыточным, поскольку метки будут в последующих строках. - person Larry; 22.07.2019
comment
Мой комментарий неверен относительно части grep, но часть, касающаяся самой команды find, остается в силе. - person Larry; 22.07.2019