ClearCase: Найдите файлы, имеющие точно одну определенную маркировку и не больше

В Rails4 есть несколько добавленных типов данных для Postgres.

Например, railscast # 400 называет два из них:

В Rails 4 есть поддержка собственных типов данных в Postgres, и мы покажем два из них здесь, хотя поддерживается гораздо больше: массив и магазин. Мы можем хранить массивы в столбце строкового типа и указывать тип для hstore.

Кроме того, вы также можете использовать cidr, inet и macaddr. Для получения дополнительной информации:

https://blog.engineyard.com/2013/new-in-rails-4

6
задан Jan 24 June 2009 в 10:55
поделиться

3 ответа

Предполагая, что LBL_A - (единственная) метка, которую вы хотите запустить,

cleartool find /some/dir -version 'lbtype(LBL_A)' -print | xargs cleartool describe -fmt "%n: %l"

должен выдавать

file1: (LBL_A, LBL_B)
file2: (LBL_A)

в качестве вывода, который вы затем можете проверить в своем сценарии perl или отфильтровать через sed -n ' s / \ (. * \): (LBL_A) / \ 1 / p ' (при условии отсутствия двоеточий в именах файлов).

Обновление: как правильно указывает VonC, приведенная выше команда не удастся выполнить для файлов с пробелами в Для обработки этого выполните команду:

cleartool find ... -print | tr '\012' '\000' | xargs -0 cleartool ....

, которая переведет символы новой строки в ascii null, а затем заставит xargs использовать это как разделитель.

7
ответ дан 8 December 2019 в 16:09
поделиться

Ответ Хловдала показывает, что в этом случае вам нужно найти больше элементов, чем вам нужно, а затем отфильтровать их (несмотря на все функции поиска ClearCase ) .

Примечание:

 cleartool find . -type f -element 'lbtype_sub(LBL_A)' -print

может дать вам напрямую элементы (а не версию, которая может быть не интересна в данном случае). Вы можете найти версию с -версией и директивой формата, как описано ниже.

С помощью fmt_ccase вы можете настроить вывод так, чтобы получить точно ] что ваш скрипт Perl должен продолжить:

 cleartool find . -type f -element 'lbtype_sub(LBL_A)' -exec 'cleartool describe -fmt "%En %Cl\n" \"$CLEARCASE_XPN\"' | grep -v ","
  • -fmt "% En% l \ n" отобразит полный путь к элементу (вместо версии: / a / б / myFile @@ / main / myVersion) => / a / b / myFile '. ' \ n` гарантирует один результат на строку.
  • -version и -fmt "% n% l \ n" отображают версию
  • \ "$ CLEARCASE_XPN \ ": двойные кавычки вокруг расширенного пути найденной версии гарантируют, что файл с пробелами в его имени будет по-прежнему работать.
  • grep -v", ": если есть запятая, это означает "более одной метки"
  • % Cl : избегать отображения списка всех меток. В любом случае, если их несколько, вас это не интересует!

Итак, для поиска точной версии :

 cleartool find . -type f -version 'lbtype_sub(LBL_A)' -exec 'cleartool describe -fmt "%n %Cl\n" \"$CLEARCASE_XPN\"' | grep -v ","|awk '{sub(/ \(.*/,"");print}'

Примечание:
Вышеупомянутое работает с синтаксисом unix. Синтаксис Windows будет следующим:

cleartool find . -type f -element "lbtype(LBL_A)" -exec "cleartool describe -fmt \"%n %Cl\n\" \"%CLEARCASE_XPN%\"" | grep -v "," | gawk "{gsub(/ \(.*,"");print}"

, в котором будут перечислены версии файлов только с одной (правильной) меткой.

  • awk '{sub (/ \ (. * /, ""); Print}' преобразует " myFile @ @ / main / myVersion (LBL_A) " в " myFile @@ / main / myVersion "
2
ответ дан 8 December 2019 в 16:09
поделиться

Вы можете сделать это напрямую, не передавая по конвейеру:

cleartool find . -ver "lbtype(LBL_A) && !lbtype(LBL_B)" -print
6
ответ дан 8 December 2019 в 16:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: