Как скопировать содержимое метки в Base clearcase VOB?

Нам нужно все содержимое меток Base Clearcase VOB. Я создал представление для VOB и отредактировал документ config.spec как

element * checkedout
element * label_ID
element * /main/latest

Но он приносит все компоненты, связанные с VOB, а не с этикеткой.

Как выбрать только элементы с меткой label_ID?


person CCUSER    schedule 12.03.2015    source источник


Ответы (2)


Если вы не против увидеть кучу пустых каталогов, вы можете сделать что-то вроде этого:

element * CHECKEDOUT
element -file * label_ID
element -directory * /main/LATEST

Это вернет ПОСЛЕДНЮЮ или ПРОВЕРЕННУЮ версию каждой папки, но не будет отображать файл, если он не помечен или не отмечен.

Ознакомьтесь с справочная страница config_specs - есть масса вещей, которые вы можете сделать со спецификациями конфигурации (например, если вам нужна только документация MSWord , вы могли бы так "element -file * .doc / main / LATEST")

person Garry    schedule 13.03.2015
comment
Спасибо @VonC за ваши ценные предложения - person CCUSER; 16.03.2015

Если метка была установлена ​​на самом vob и на всех элементах (например: /<vobtab>/dir1, /<vobtab>/dir1/dir2/, /<vobtab>/dir1/dir2/*), тогда следующая спецификация конфигурации принесет только помеченные элементы, а не остальную часть элементы vob:

element * checkedout
element * label_ID
element * -none

Но если label_ID был установлен для всех элементов в /<vobtab>/dir1/dir2/*, , а не на /<vobtab>/dir1/ (сама родительская папка) или не на /<vobtab>/ (корневая папка самого vob), то эта спецификация конфигурации не принесет элементы вообще.
Обходной путь - выбрать родительские элементы:

element * checkedout
element * label_ID
element /<vob_tag>/dir1 /main/LATEST
element /<vob_tag> /main/LATEST
element * -none

Я бы рекомендовал делать это в динамическом представлении (которое можно очень быстро обновлять после каждого изменения спецификации конфигурации) вместо представления моментального снимка (который должен перезагружаться после каждого setcs)


Другой подход, не основанный на спецификации конфигурации (поскольку может быть трудно выбрать правильные родительские папки для доступа к помеченным элементам), заключается в использовании _ 10_ запрос.
См.:

По сути, вы можете перечислить только отмеченный элемент, перейдя в ваше «желательно динамическое» представление и выполнив:

UNIX и Linux:

cleartool find -cview -element '{lbtype_sub(REL1)}' -print

Windows:

cleartool find -cview -element "{lbtype_sub(REL1)}" -print

Вместо использования -print вы можете использовать -exec "a command" и использовать параметр exec для выполнения любой команды, например, копирования того, что вы только что нашли:

cleartool find -cview -element "{lbtype_sub(REL1)}" -exec "copy \"%CLEARCASE_PN%\" c:\a\path"

cleartool find . –version "lbtype(LB_TYPE)"

Если команда слишком привередлива, просто перенаправьте результат в файл:

cleartool find -cview -element "{lbtype_sub(REL1)}" -print > file.txt

Затем обработайте этот файл, чтобы скопировать его содержимое, как в «Пакет: скопируйте список (txt) файлов»:

@echo off
set src_folder=c:\whatever
set dst_folder=c:\target
for /f "tokens=*" %%i in (File-list.txt) DO (
    xcopy /S/E/U "%src_folder%\%%i" "%dst_folder%"
)
person VonC    schedule 12.03.2015
comment
Тем не менее, я не могу получить результат после использования этой команды, пожалуйста, укажите точную команду и то, как она работает, это ошибка, с которой я столкнулся после запуска этой команды. ** M: \ Race_Label \ RACE ›cleartool find -all -element {lbtype_sub (BUILD_RACE_HFM_01)} -exec copy \% CLEARCASE_PN% \ C: \ 111 ** 'cleartool: Ошибка: не удается выполнить копию M: \ Race_Label \ RACE \ HFM \ Application Profile \ RACE Profile.per C: \ 111: системе не удается найти указанный файл.'@VonC - person CCUSER; 13.03.2015
comment
@CCUSER просто удалите -all или замените его на -cview: это ограничит результат помеченными элементами, которые фактически видны (и могут быть скопированы), в отличие от всех версий, которые могут ссылаться на элементы с момента удаления (rmname). - person VonC; 13.03.2015
comment
M: \ Race_Label \ RACE ›** cleartool find -cview -element {lbtype_sub (BUILD_RACE_HFM_01)} -exec copy \% CLEARCASE_PN% \› C: \ 111 \ ** cleartool: Error: Укажите путь. Использование: find {pname ... [-depth | -nrecurse | -каталог] | [pname ...] -all [-visible | -невидимый] | -avobs [-visible | -nvisible]} [-name 'шаблон'] [-cview [-type {f | d | l} ...] {-print | -exec вызов команды | -ok command-invocation} он запрашивает путь, прочтите сообщение об ошибке @ VonC - person CCUSER; 13.03.2015
comment
@CCUSER, почему у вас есть ">" между \"%CLEARCASE_PN%\" и C:\111\"? Не могли бы вы попробовать без >? Также C: \ 111 должен заканчиваться ", а не '\ `. - person VonC; 13.03.2015
comment
Я запустил: cleartool find -cview -element {lbtype_sub (BUILD_RACE_HFM_01)} -exec copy \% CLEARCASE_PN% \ C: \ a Я получил ошибку как: cleartool: Error: Требуется путь. < / b> Я испробовал все возможности этой команды, пожалуйста, поделитесь своими ценными предложениями. - person CCUSER; 13.03.2015
comment
@CCUSER, возможно, потребуется другой подход, если часть exec слишком сложна для правильной настройки: вы можете сначала использовать -print (вместо -exec), по крайней мере, чтобы проверить, действительно ли он перечисляет файлы, которые вы ожидаете. Затем вы можете перенаправить этот вывод в файл: cleartool find ... -print > afile и передать этот файл небольшому скрипту, например: stackoverflow.com/a/6258198/ 6309 - person VonC; 13.03.2015
comment
@CCUSER Странно: ваши первые сообщения об ошибках показывают, что команда find нашла хотя бы один файл. Попробуйте сначала заставить find -print работать. - person VonC; 13.03.2015
comment
сценарий дает проблемы - person CCUSER; 13.03.2015
comment
@CCUSER, вы имеете в виду сценарий, который я упомянул в stackoverflow.com/a/6258198/6309? Во-первых, правильно ли работает cleartool find ... -print? У вас есть список ожидаемых файлов? - person VonC; 13.03.2015