我是一名ClearCase新手,直到现在已经习惯了SVN。因此,我对在创建包含多个文件到ClearCase的新目录结构时需要采取的步骤感到困惑。
因此,例如,ClearCase中存在一个现有的目录结构,如下所示:
\ParentDirectory
\ChildDirectory1
\File1
\File2
\ChildDirectory2
\ChildDirectory3
\File1
\ChildDirectory4
如果我想在这个结构中添加一个新的子目录,ChildDirectory5,它将包含许多其他文件,我该怎么做呢?根据我一直在阅读的内容,我首先需要检查父目录,然后使用mkelem命令创建每个子目录和文件。
但是,我已经在本地计算机上创建了必要的文件和目录,所以我只需要以某种方式将它们检入ClearCase。使用SVN,我需要做的就是将父文件夹复制到已检出的仓库并执行添加&提交命令序列。
答案 0 :(得分:5)
正如How can I use ClearCase to “add to source control …” recursively?中所解释的那样,你必须使用clearfsimport来实现你所说的(检查父目录,mkelem表示元素)
clearfsimport -preview -rec -nset c:\sourceDir\ChildDirectory5 m:\MyView\MyVob\ParentDirectory
请注意:
对于需要导入大量数据的初始化阶段,我建议动态视图:您可以快速查看视图的外观,而无需进行任何更新(例如“不更新工作区”) ):
ClearCase允许以两种方式访问数据:
答案 1 :(得分:2)
我使用此脚本的变体(我称之为“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选项将自动创建和/或签出任何所需的目录。
对于这个脚本,-nodo只需输出命令,-exclude将允许你指定一个模式,任何匹配它的文件都将被排除在外。
请注意,Getopt :: Attribute不是标准Perl发行版的一部分,但它可以在您附近的CPAN镜像上使用。
答案 2 :(得分:1)
您必须导入您的本地目录结构。命令为clearfsimport。