Subversion を使ってみた2008年02月05日 18時47分53秒

あるデータ構造に変更を加える必要が出てきたために、全てのソースコードを点検する必要ができた。どのプロセスが、このデータをどの様に使っているのか、良く判らないために、構造体を変更しただけでは、途中にコピーされるバッファなどが溢れたりする可能性もある。

物凄い量のコードなので、作業をある程度簡単にするべく、リビジョンコントロールシステムを新規に使う事にした。点検する毎にコードを消していき、最終的には全てのファイルが削除される算段だ。

何が使えるかを調べてみると、Linux 上に cvs と svn があるだけだった。古めのシステムで、容易には更新できないシステムなので、比較的新しい物はまだ入っていないようだ。


$ svn --version
svn, version 1.1.4 (r13838)
   compiled Apr 12 2005, 15:59:47

実際にこんな感じだ。

ソースコードの量は半端ではない。900MB に迫る量だ。


$ du -s RELEASE
875140  RELEASE
$ find RELEASE -type f | wc
 126051  126051 6691496

しかし、ここには過去の複数のバージョンが幾つも無造作に突っ込んである為、実際に使われている物は、この十分の一程度だと予想される。

Linux なので、bash が起動している。その為、プロンプトが $ だ。待ち時間を減らすために、tmpfs が使われている、/dev/shm で作業をする。なお、十分なメモリが確保されているのは、点検済みだ。


$ cd /dev/shm/uyota
$ svnadmin create svnrepos
$ cd RELEASE
$ svn import file:///dev/shm/uyota/svnrepos/work/trunk

いつまで待っても終わる気配が無いので、一旦停止して time で時間を計ることにした。比較対象として、cvs でも import をする。

$ csh -c "time cvs -d /dev/shm/uyota/cvsrepos/ import
-m ''Original copy as of 2008/01/10.' work work1 work1_1 > /dev/null"
4.282u 12.214s 0:16.50 99.9%    0+0k 0+0io 0pf+0w

$ csh -c "time svn import file:///dev/shm/uyota/svnrepos/work/trunk
-m 'Original copy as of 2008/01/10.' > /dev/null"
547.692u 17.705s 9:25.57 99.9%  0+0k 0+0io 0pf+0w

cvs が十五秒前後なのに対し、svn は十分近くかかっている。その差は、約四十倍。svn は止めようかなと思い始めた。

折角なので、ディスク容量の比較。


$ du -s *
891100  cvsrepos
875140  RELEASE
789836  svnrepos

チェックアウトしてみる。


$ svn co file:///dev/shm/uyota/svnrepos work
...
A  test/system/scripts/private/info.pl
svn: Malformed XML: not well-formed (invalid token) at line 2208

簡単に調べてみたところ、XML が壊れてしまったようだ。手で、svn の生成した XML ファイルを修正すれば、良いらしい。そこには原因については言及されていなかった。

svn が古いのも原因の一つだろうが、これ以上原因を追求しても、他にも問題に当たりそうな気がする。今回は、svn を使うのを止めた。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2008/02/05/2603644/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。