emerge -uDN cvs2svn
コマンドの実行はこんな感じでやった.
cvs2svn -s /data/svn/test --encoding=euc-jp --symbol-transform="U?R([0-9]+)_([0-9]+)_([0-9]+)_([0-9].*):R\1.\2.\3.\4" --symbol-transform="Intermissiion:merge1.3_to_trunk" --symbol-transform="DEV_1_(.*):dev-1.\1" --symbol-transform="NN:original" --auto-props-ignore-case --fs-type=fsfs /data/cvs
cvsとsubversionでは, リポジトリ内のデータの保存方法が違うので,
そのあたりを編集する.
まずは, 以下を事前に作っておく(適当に./test.plなんて名前を付けていたけど...)
#!/usr/bin/perl
use strict;
use File::Basename;
while (<>){
chomp;
my $target=$_;
while($target =~ m/\//){
$target = dirname $target;
print "$target\n";
}
}
ここまで.
svnadmin dumpで, cvs2svnで持ってきたリポジトリをダンプ.
以下では, "fk-grubver"という名前のリポジトリを移行する例.
以下を実行
for my_replace in \ `grep -i 'Node[(-copyfrom)]*-path' orig.dump | grep fk-grubver | gawk '{print $2}' | sort | uniq | ./test.pl | sort | uniq` do echo $my_replace ; perl -pi -e "s|^Node-path: $my_replace\$|Node-path: fk-grubver/$my_replace|" dump.log ; perl -pi -e "s|^Node-copyfrom-path: $my_replace\$|Node-copyfrom-path: fk-grubver/$my_replace|" dump.log ; done
Node-path:の該当箇所を修正
perl -pi -e 's|^Node-path: (?:fk-grubver/)?trunk/(private/scan/tools/fk-grubver)|Node-path: $1/trunk|' dump.log perl -pi -e 's|^Node-path: (?:fk-grubver/)?branches/(private/scan/tools/fk-grubver)|Node-path: $1/branches|' dump.log perl -pi -e 's|^Node-path: (?:fk-grubver/)?tags/([^/][^/]*)/(private/scan/tools/fk-grubver)|Node-path: $2/tags/$1|' dump.log perl -pi -e 's|^Node-path: private/scan/tools/fk-grubver|Node-path: fk-grubver|' dump.log
Node-copyfrom-path:の該当箇所を修正
perl -pi -e 's|^Node-copyfrom-path: (?:fk-grubver/)?trunk/(private/scan/tools/fk-grubver)|Node-copyfrom-path: $1/trunk|' dump.log perl -pi -e 's|^Node-copyfrom-path: (?:fk-grubver/)?branches/([^/][^/]*)/(private/scan/tools/fk-grubver)|Node-copyfrom-path: $2/branches/$1|' dump.log perl -pi -e 's|^Node-copyfrom-path: (?:fk-grubver/)?tags/([^/][^/]*)/(private/scan/tools/fk-grubver)|Node-copyfrom-path: $2/tags/$1|' dump.log perl -pi -e 's|^Node-copyfrom-path: private/scan/tools/fk-grubver|Node-copyfrom-path: fk-grubver|' dump.log
fk-grubverに関連する部分のみを取り出す.
svndumpfilter include 'fk-grubver' < dump.log > dump.fk-grubver.log
プロジェクト単位でリポジトリを作るので, 頭の修飾語を消す
perl -pi -e 's|^Node-path: fk-grubver|Node-path: |' dump.fk-grubver.log perl -pi -e 's|^Node-copyfrom-path: fk-grubver|Node-copyfrom-path: |' dump.fk-grubver.log grep -i 'Node[(-copyfrom)]*-path' dump.log rm -fr semi-private mkdir semi-private svnadmin create --fs-type fsfs semi-private/fk-grubver svnadmin load semi-private/fk-grubver < dump.fk-grubver.log
0 件のコメント:
新しいコメントは書き込めません。