所以,這次相反 - 我需要將基於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