Создание новой структуры подкаталогов в ClearCase?
Я новичок в ClearCase и до сих пор привык к SVN. Поэтому я немного запутался в шагах, которые мне нужно предпринять, чтобы создать новую структуру каталогов, содержащую несколько файлов для ClearCase.
Так, например, в ClearCase существует существующая структура каталогов:
\ParentDirectory
\ChildDirectory1
\File1
\File2
\ChildDirectory2
\ChildDirectory3
\File1
\ChildDirectory4
Если я хочу добавить в эту структуру новый подкаталог ChildDirectory5, который будет содержать ряд других файлов, как мне это сделать? Из того, что я читал, мне нужно сначала проверить родительский каталог, а затем использовать команду mkelem для создания каждого подкаталога и файла.
Тем не менее, я уже создал необходимые файлы и каталоги на своем локальном компьютере, поэтому мне просто нужно как-то проверить их в ClearCase. С SVN все, что мне нужно было бы сделать, это скопировать родительскую папку в извлеченное хранилище и выполнить последовательность команд add & commit.
3 ответа
Как объяснено в разделе Как я могу использовать ClearCase для "рекурсивного добавления в систему контроля версий…"? Вы должны использовать clearfsimport, который делает то, что вы говорите (проверьте родительские каталоги, mkelem для элементов)
clearfsimport -preview -rec -nset c:\sourceDir\ChildDirectory5 m:\MyView\MyVob\ParentDirectory
Обратите внимание:
- опция -preview: она позволит проверить, что произойдет, фактически ничего не делая.
- '*' используется только в среде Windows, чтобы импортировать содержимое каталога
- опция -nset (см. мой предыдущий ответ о nset).
Я бы порекомендовал динамическое представление для тех фаз инициализации, когда вам нужно импортировать много данных: вы можете быстро увидеть, как выглядит ваше представление, не внося никаких изменений (например, "без обновления рабочей области"):
ClearCase позволяет получить доступ к данным двумя способами:
- представление снимка (как и рабочее пространство SVN, за исключением того, что все файлы.svn фактически выводятся в хранилище представления за пределами рабочего пространства)
- динамический просмотр: все ваши файлы видны через сеть (мгновенный доступ / обновление)
Я использую вариант этого скрипта (я называю это "ctadd"):
#!/usr/bin/perl
use strict;
use Getopt::Attrribute;
(our $nodo : Getopt(nodo));
(our $exclude_pat : Getopt(exclude_pat=s));
for my $i (@ARGV) {
if ($i =~ /\s/) {
warn "skipping file with spaces ($i)\n";
next;
}
chomp(my @files = `find $i -type f`);
@files = grep !/~$/, @files; # emacs backup files
@files = grep !/^\#/, @files; # emacs autosave files
if (defined($exclude_pat)) {
@files = grep !/$exclude_pat/, @files;
}
foreach (@files) {
warn "skipping files with spaces ($_)\n" if /\s/ ;
}
@files = grep !/\s/, @files;
foreach (@files) {
my $cmd = "cleartool mkelem -nc -mkp \"$_\"";
print STDERR "$cmd\n";
system($cmd) unless $nodo;
}
}
Опция -mkpath в cleartool mkelem автоматически создает и / или проверяет любые необходимые каталоги.
Для этого скрипта -nodo будет просто выводить команды, а -exclude позволит вам указать шаблон, для которого любой файл, который ему подходит, будет исключен.
Обратите внимание, что Getopt::Attribute не является частью стандартного дистрибутива Perl, но он доступен на зеркале CPAN рядом с вами.
Вы должны импортировать свою локальную структуру каталогов. Команда clearfsimport.