从SVN移动到CLEARCASE(Moving from SVN to ClearCase)

2019-06-23 22:42发布

因此,它是这一轮时间相反的方式 - 我需要迁移基于SVN项目到ClearCase中。 是否有任何工具,有会做的过程中更容易一点(而不是组建一个自定义脚本)以及是否有任何人谁拥有了经验,这样做的任何陷阱?

谢谢!

Answer 1:

如前所述此处(IBM)在和这个线程 ,没有直接的工具来导入SVN数据的ClearCase。

这意味着自定义脚本您的工作空间SVN设置相关的里程碑,然后clearfsimport那些与一个“正确”的配置规格(即“配置规范”)ClearCase视图。

通过适当的,我的意思是将其导入到相关的ClearCase分支的定位到“分支目录”颠覆文件的不同副本ClearCase视图。 然后按照正确的顺序导入“标签”在ClearCase进口视图(SVN回购仍然复印件),但那种进口后立即设置标签。

因此,主要的“疑难杂症”是盲目导入所有SVN结构:这将导致实际的目录不应该出现在ClearCase的所有,因为分支和标签都是一等公民使用此工具,而不是“山寨”像SVN。

一个好的剧本与启动(和适应的课程)将svn2git它会侦测SVN分支和标签,并尝试导入这些“目录”到混帐的内容(也可以将它们导入到ClearCase中,通过正确的系统调用“clearfsimport”命令')。

由于单个修订的进口可能相当长,一个现实的做法是将脚本限制为仅导入:

  • 标签
  • 树干HEAD
  • 申报分支机构的负责人

当导入分支,这意味着创建brtype,然后设置一个标签(起点),终于改变了配置规范,以获得下选择规则:

element * .../svnBranch
element * STARTING_LABEL -mkbranch svnBranch
element /main/0 -mkbranch svnBranch

最重要的一点是有没有代表SVN分支和标签出现在目录的最终结果。
从那里,你将能够移动/重命名主目录到任何你想要的结构,就像一个适合UCM组件声明(如果你想使用UCM)。



Answer 2:

当使用svn2cc脚本,你会得到一个playall.bat结束。

如果您运行下面的脚本,然后它会修改之间,使他们更容易访问以后标签。

有一点也许是过度的,但有些人可能会觉得它有用。 我不作任何道歉的代码质量:)

# File Name ......................... revision_labeller.pl
# Written By ........................ Stuart Davidson
# Date .............................. 21/07/2009
#
# Description :
# Adds the auto-generation and application of labels to an SVN import. 
# 
# Usage : 
# revision_labeller.pl -label SVN-IMPORT-MYPROJECT -playall playall.bat


use strict;
use warnings;
use Getopt::Long;

use vars qw($label $playall_path);

GetOptions(
   'label=s'            => \$label,
   'playall=s'          => \$playall_path,
) or exit 2;

my $revisions = 0;
my $output = "";

# Count how many chout_x there are.
open(PLAY, "<$playall_path");

while(<PLAY>)
{
    if($_ =~ /^call chout_\d{1,3}.bat/)
    {
        $revisions++;
    }
    $output .= $_;
}
close(PLAY);

# Add the ability to make labels.
$output =~ s/call chin_(\d{1,3}).bat/call chin_$1.bat\ncleartool mklabel -recurse ($label)_$1 ./g;
$output =~ s/\($label\)/$label/g;

# For each revision, at the start, create the label
my $create_labels = "";
for(my $i = 1; $i <= $revisions; $i++)
{
    $create_labels .= "cleartool mklbtype -cfile \"comments_" . $i . ".txt\" " . $label . "_" . $i . "\n";
}
$output = $create_labels . $output;

# For each revision, at the end, lock the label
my $lock_labels = "";
for(my $i = 1; $i <= $revisions; $i++)
{
    $lock_labels .= "cleartool lock lbtype:" . $label . "_" . $i . "\n";
}
$output = $output . $lock_labels;

print $output;


文章来源: Moving from SVN to ClearCase
标签: svn clearcase