как найти корень [папку] для каждого компонента с помощью cleartool?

Как найти корневую папку, с которой связан компонент?

Я могу найти его вручную через проводник проекта -> Компоненты-> свойства.

Как это сделать с помощью команды cleartool. Мне это нужно, так как мне нужно создать спецификацию конфигурации, которую можно применить в базовом представлении clearcase и просмотреть содержимое представления UCM.


person Samselvaprabu    schedule 07.01.2012    source источник


Ответы (1)


Взгляните на параметры« Форматировать строки для вывода команды »(fmt_ccase):

 cleartool descr -fmt "%[root_dir]p" component:aComponent@\aPVob

Вы можете получить этот путь в корневой каталог (обычно \aVob для "компонента vob" или "\aVob\aRootDir" для компонентов внутри Vob).


Оттуда для управления доступом к определенным базовым уровням компонентов UCM в представлениях не-UCM вы можете использовать подход, аналогичный "Слияние проекта с ветвью не-UCM" в сценарии Perl (выполнено для слияния, но вы можете адаптировать его, чтобы создать спецификацию конфигурации для указанного представления, отличного от UCM):

Этот сценарий ниже предназначен для проектов, в которых используются рекомендуемые базовые планы, и приведен в качестве примера использования "%[root_dir]p".
Если вы не используете рекомендуемые базовые планы, вы просто перечислите все компоненты для данного потока:
cleartool descr -fmt "%[components]CXp" stream:aStream@\aPVob

print("######## Getting recommended baselines for project 
'$project'\n");
my @recbls = split(' ', ‘cleartool lsproject -fmt "%[rec_bls]p" 
$project‘);

foreach $bl (@recbls) {

    my $comp = ‘cleartool lsbl -fmt "%[component]p" $bl‘;
    my $vob = ‘cleartool lscomp -fmt "%[root_dir]p" $comp‘;

    #... build your config spec there
}
# call cleartool setsc there

Затем вы должны сгенерировать (и применить к спецификации конфигурации) файл, похожий на ваш другой вопрос " Спецификация конфигурации Clearcase ведет себя странно при использовании setcs command".


OP сообщает, что этот подход работает с использованием Powershell:
(изначально у него были проблемы с моим примером, скопированным с сайта IBM, где дефисы-минус '-' заменены не-ASCII минус '':, '- vs. –: -–' : см. "Какая самая сложная ошибка, которую вы когда-либо находили и исправлено? "):

$project="MyComponents@\My_PVOB" 
$pvob="@\My_PVOB" 
$Baselines=(cleartool lsproject -fmt "%[rec_bls]p" $project).split() 
foreach ($bl in $Baselines) { 
  $comp=cleartool lsbl -fmt "%[component]p" $bl"$pvob" 
  $vob = cleartool lscomp -fmt "%[root_dir]p" $comp"$pvob" 
}
person VonC    schedule 07.01.2012
comment
используйте строгий; мой $ project = Компоненты @ \ My_PVOB; мой $ bl; print (######## Получение рекомендуемых базовых планов для проекта '$ project' \ n); мой @recbls = split ('', cleartool lsproject -fmt "%[rec_bls]p" $project); foreach $ bl (@recbls) {мой $ comp = cleartool lsbl –fmt "%[component]p" $bl; мой $ vob = cleartool lscomp –fmt "%[root_dir]p" $comp; # ... создайте там свою конфигурационную спецификацию} # вызовите здесь cleartool setsc exit 0; Он не работает как cleartool: Ошибка: невозможно определить VOB для пути My_PVOB. Я пытался решить проблему в течение 2 часов, но безуспешно. Что мне не хватает? - person Samselvaprabu; 07.01.2012
comment
@Samselvaprabu Сначала вам нужно знать, на какой строке происходит сбой (lsbl? lscomp?). Затем убедитесь (никогда не помешает спросить), что у вас есть правильное имя / путь для вашего PVob: \MyPVob для Windows, /vobs/MyPVob для Unix (и, конечно, замените 'MyPVob' на имя вашего фактического PVob). Наконец, упростите. Сделайте свой сценарий однострочным, пытаясь lsbl или lscomp использовать только один объект, и посмотрите, работает ли это. После того, как вы отладили это, остальная часть начального и более полного сценария должна работать. - person VonC; 08.01.2012
comment
@Samselvaprabu: если у вас все еще есть проблемы с некоторыми cleartool командами в этом сценарии, поместите полную команду cleartool и ее полный вывод в эти комментарии: я буду их отлаживать. - person VonC; 08.01.2012
comment
Спасибо, приятель. Я думаю, что ваше содержимое скопировано из какого-то pdf или другого формата. Это дает некоторые проблемы с форматом utf. Кроме того, имя PVOB в окнах требует @ \ PVob. $ project = MyComponents @ \ My_PVOB $ pvob = @ \ My_PVOB $ Baselines = (cleartool lsproject -fmt% [rec_bls] p $ project) .split () foreach ($ bl в $ Baselines) {$ comp = cleartool lsbl -fmt% [компонент] p $ bl $ pvob $ vob = cleartool lscomp -fmt% [root_dir] p $ comp $ pvob} (я использовал powershell) - person Samselvaprabu; 08.01.2012
comment
да. Спасибо, приятель, за то, что приложил все усилия в своем ответе. (Можете ли вы отредактировать свой ответ? Чтобы люди, читающие ваш ответ, не столкнулись с проблемой форматирования, с которой я столкнулся - person Samselvaprabu; 08.01.2012
comment
@Samselvaprabu: Отлично. Я отредактировал свой ответ, включив в него ваши выводы, и исправил все минусовые знаки, заменив их дефисом-минусом. См. stackoverflow.com/questions/169713/ - person VonC; 08.01.2012