В Rails4 есть несколько добавленных типов данных для Postgres.
Например, railscast # 400 называет два из них:
В Rails 4 есть поддержка собственных типов данных в Postgres, и мы покажем два из них здесь, хотя поддерживается гораздо больше: массив и магазин. Мы можем хранить массивы в столбце строкового типа и указывать тип для hstore.
Кроме того, вы также можете использовать cidr, inet и macaddr. Для получения дополнительной информации:
Предполагая, что 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 использовать это как разделитель.
Ответ Хловдала показывает, что в этом случае вам нужно найти больше элементов, чем вам нужно, а затем отфильтровать их (несмотря на все функции поиска 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 "Вы можете сделать это напрямую, не передавая по конвейеру:
cleartool find . -ver "lbtype(LBL_A) && !lbtype(LBL_B)" -print