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 не работал должным образом с "!" не сбежать.