Создание новой структуры подкаталогов в 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.

Другие вопросы по тегам