2009-01-06 121 views
4

我是一名ClearCase新手,到目前爲止已經用於SVN。因此,我對創建一個包含多個文件到ClearCase的新目錄結構需要採取的步驟感到困惑。在ClearCase中創建新的子目錄結構?

所以,比方說有ClearCase中現有的目錄結構如下:

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

如果我想要一個新的子目錄添加到該結構,ChildDirectory5,其中將包含一些其他文件,我該如何解決這個問題?從我一直在閱讀的內容中,我將首先檢查父目錄,然後使用mkelem命令創建每個子目錄和文件。

但是,我已經在本地機器上創建了必要的文件和目錄,因此我只需要以某種方式將它們檢入ClearCase。使用SVN,我所需要做的就是將父文件夾複製到檢出的repo中,並在其上添加& commit命令序列。

回答

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 

注:

  • -preview選項:它將允許檢查會發生什麼,而不用做任何事情。僅在Windows環境中,以進口目錄的內容
  • -nset選項(參見我previous answer約NSET)
  • 「*」。

我會建議動態視圖在您需要導入大量的數據的初始化階段:您可以快速查看您的看法是什麼樣子,而不進行任何更新(如「而不更新您的工作區」):
的ClearCase允許訪問兩種方式中的數據:

  • 快照視圖(如SVN的工作空間,除了所有的.svn工作區外的視圖存儲實際上是外部化)
  • 動態視圖:您所有的文件是可見的thr ough網絡(即時訪問/更新)
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的-mkpath選項mkelem會自動創建和/或者查看任何需要的目錄。

對於這個腳本,-nodo只會輸出命令,而-exclude將允許你指定一個模式,任何匹配它的文件都將被排除。

請注意Getopt :: Attribute不是標準Perl發行版的一部分,但它可以在您附近的CPAN鏡像上使用。