所以,这次相反 - 我需要将基于SVN的项目迁移到ClearCase中。是否有任何工具可以使流程变得更简单(而不是将自定义脚本放在一起),并且有经验的人有任何问题吗?从SVN转移到ClearCase
谢谢!
所以,这次相反 - 我需要将基于SVN的项目迁移到ClearCase中。是否有任何工具可以使流程变得更简单(而不是将自定义脚本放在一起),并且有经验的人有任何问题吗?从SVN转移到ClearCase
谢谢!
如提到的here (ibm)和this thread,没有直接的工具来将SVN数据导入到ClearCase。
这意味着将您的SVN工作区设置为相关里程碑的自定义脚本,然后将clearfsimport那些设置为具有“正确”配置规范(即“配置规范”)的ClearCase视图。
正确的,我的意思是一个ClearCase视图导入相关的ClearCase分支Subversion文件位于'分支目录'的不同副本。然后在ClearCase导入视图中以正确顺序导入'tags'(仍然在SVN仓库中复制),并在该导入后立即设置标签。
所以主要的'gotcha'是盲目地导入所有的SVN结构:这会导致实际的目录根本不应该出现在ClearCase中,因为分支和标签是使用此工具的一流公民,而不是'便宜的拷贝'就像在SVN中一样。
好的剧本开始与(和适应的课程)将svn2git它会侦测SVN分支和标签,并尝试导入这些“目录”到混帐的内容(也可以导入通过正确的系统调用到'clearfsimport'命令')将它们转换为ClearCase。
由于单个修订的进口可能是相当长的,一个现实的做法是将脚本限制为仅导入:
导入分支时,这意味着创建brtype,然后设置标签(起点),最后更改配置规范以获得以下选择r ules:
element * .../svnBranch
element * STARTING_LABEL -mkbranch svnBranch
element /main/0 -mkbranch svnBranch
重要的一点是要有一个最终结果,而不要在SVN中存在表示分支和标记的目录。
从那里,你将能够移动/重命名主目录到任何你想要的结构,比如适合UCM组件声明的那个(如果你想使用UCM)。
使用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;
我只是感到震惊,有人认为从SVN到ClearCase是一个升级? – 2009-06-23 13:59:06
我确实加注了你的问题(+1),但你应该知道社区没有看到ClearCase的好处(哎,我并不总是喜欢它,特别是当涉及到文件每文件操作性能时; ))。因此,您可能想要重命名标题:“升级”和“ClearCase”在某些特定场景(具有多个组件依赖关系的复杂合并工作流程)中可能是有意义的,但没有这种上下文......似乎会激怒我们同样的SO用户;) – VonC 2009-06-23 14:10:42