ClearCase: как найти элементы, которые НЕ имеют определенной метки

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

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

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

3 ответа

Решение

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

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 'дисплей, вы можете объединить любую информацию и презентацию, которую вы хотите для результата.

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

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

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

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

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