ClearCase: как найти элементы, которые НЕ имеют определенной метки - PullRequest
4 голосов
/ 13 января 2009

Я ищу команду ClearCase, которая перечислит все элементы, которые видны в моем текущем представлении, но к НЕ применена определенная метка.

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

Мне, очевидно, нужно использовать cleartool find, но страница использования и справочная страница ClearCase сбивают меня с толку с точки зрения того, как построить запрос, подобный этому.

Ответы [ 3 ]

3 голосов
/ 14 января 2009

Это должно работать:

ct find -all -ele '! lbtype_sub(LABEL_X)' -print
ct find -ele '! lbtype_sub(LABEL_X)' -print

Примечания:

  • ct обозначает cleartool
  • Синтаксис Unix здесь (для windows замените простые кавычки на двойные)
  • Остерегайтесь пробелов между ! и lbtype_sub (в winodws вам не нужно пространство)
  • -ele очень ВАЖНО, чтобы получить только одно вхождение данного файла (и не все разные версии файла, соответствующие критериям)

-ele ограничивает поиск элементами, а не версиями (которые могут вызвать намного больше результатов с задействованными версиями ...)

-all перечислить все элементы, включая «удаленные» (то есть «не связанные»).
Во второй строке перечислены только видимых элементов (в текущем представлении)

Вы должны выполнить эти вторые командные строки в подкаталоге по вашему выбору в данном ClearCase (снимок или динамическое представление): все файлы в этом подкаталоге (и подкаталогах ...), соответствующие циртерии, будут быть в списке.

Предупреждения:

  • файлы и каталоги перечислены. Если вам нужны только файлы, добавьте -type f к запросу:

    ct find -type f -ele '! Lbtype_sub (LABEL_X)' -print

  • то, что отображается, это расширенный путь для элементов, то есть имя файла, за которым следует @@.

Чтобы отобразить только имя без @@, используйте '-nxn' (без опции имени расширенного пути)

ct find -nxn -ele '!lbtype_sub(LABEL_X)' -print

Еще один более сложный, но и более полный способ перечисления только имени без @@, заключается в использовании descr -fmt. Например:

ct find . -ele "!lbtype_sub(LABEL_X)" -exec "cleartool descr -fmt \"%En %d\n\" \"%CLEARCASE_PN%\""

ct find . -ele '! lbtype_sub(LABEL_X)' -exec 'cleartool descr -fmt "%En %d\n" "$CLEARCASE_PN"'

даст вам (в синтаксисе windows или unix) дату и имя файлов и каталогов, не помеченных как LABEL_X.

С этим дисплеем 'descr -fmt' вы можете комбинировать любую информацию и презентацию, какую хотите для результата.

2 голосов
/ 18 февраля 2009

Выше работает, но не забудьте указать -cview, чтобы получить ТОЛЬКО текущее представление, иначе вы также получите файлы из всех других представлений.

1 голос
/ 28 января 2010

Мне нужно было использовать следующее в моей установке Linux clearcase:

cleartool find -cview -all -version '\!lbtype(LABEL_X)' -print

Синтаксис из поста VonC не работал должным образом с "!" не сбежал.

...