在ClearCase中创build一个新的子目录结构?

我是一个ClearCase新手,到现在为止已经被用于SVN。 因此,我对创build一个包含多个文件到ClearCase的新目录结构需要采取的步骤感到困惑。

所以,举个例子,在ClearCase中有一个现有的目录结构如下:

\ParentDirectory \ChildDirectory1 \File1 \File2 \ChildDirectory2 \ChildDirectory3 \File1 \ChildDirectory4 

如果我想添加一个新的子目录到这个结构中,ChildDirectory5将会包含许多其他的文件,我该怎么做呢? 从我一直在阅读的内容中,我将需要首先检查父目录,然后使用mkelem命令创build每个子目录和文件。

但是,我已经在本地机器上创build了必要的文件和目录,所以我只需要以某种方式将它们检入到ClearCase中。 有了SVN,我所需要做的只是将父文件夹复制到签出的repo中,并对其执行添加和提交命令序列。

正如我如何使用ClearCaserecursion地“添加到源代码控制…”中所解释的? ,你必须使用clearfsimport来做你正在说的(检查父目录,mkelem的元素)

 clearfsimport -preview -rec -nset c:\sourceDir\ChildDirectory5 m:\MyView\MyVob\ParentDirectory 

注意:

  • 预览选项:它将允许检查什么会发生,而不需要做任何事情。
  • '*'仅用于Windows环境,以便导入目录的内容
  • -nset选项(请参阅我之前关于nset的回答 )。

我会build议dynamic视图的那些你需要导入大量数据的初始化阶段:你可以快速地看到你的视图是什么样的,而不做任何更新(如“没有更新你的工作空间”):
ClearCase允许以两种方式访问​​数据:

  • 快照视图(像一个SVN工作区,除了所有的.svn实际上在工作区外的视图存储中被外部化)
  • dynamic视图:所有的文件都可以通过networking看到(即时访问/更新)

我使用这个脚本的变体(我称之为“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; } } 

cleartool mkelem的-mkpath选项会自动创build和/或签出所需的目录。

对于这个脚本,-nodo只会输出命令,-exclude将允许你指定一个模式,任何匹配它的文件都将被排除。

请注意,Getopt :: Attribute不是标准Perl分布的一部分,但它可以在您附近的CPAN镜像上使用。

您必须导入您的本地目录结构。 该命令是clearfsimport 。