ややウンザリ状態です。
・hgsebversion
・git-svn
・bzr-svn
それぞれでFreeBSDのリポジトリを変換しようとしています。
To get a clone of the Nose project, start with:
$ hg clone http://python-nose.googlecode.com/svn nose-hg
いかにも簡単そうですが、hgのバージョンが古いためか、最初のブランチ切り替えで落ちました。
「マニフェストが見つかりません」
とかなんとか。
syasuda@dosPV:~/scripts$ hg --version
Mercurial - 分散構成管理ツール(バージョン 1.4.3)
Git-svnは以下の記事を参考に進めています。
Converting a Subversion repository to Git, (7 steps to migrate a complete mirror of svn in g
ステップは実質6つあるのですが、1のauthor書式変換だけでも時間を食いました。
また、ステップ2ではSVNのリポジトリの構造がtrunk/tags/branchという標準的なレイアウトを前提にしている(--stdlayout )ので、調整が必要でした。
2. Clone the Subversion repository using git-svn
git svn clone [SVN repo URL] --no-metadata -A authors-transform.txt --stdlayout ~/temp
--stdlayout の代わりに、
-Thoge
-tbar
-bfoo
というような指定が必要です。ちゃんと指定しないと中途半端に動作するようです。うざいです。
ステップ2で6000リビジョン処理したくらいで200MB500MBくらいメモリを使っているようです。
syasuda@tres:~$ git --version
git version 1.7.0.4
bzr-svnは以下の公式ページを参考にしています。
bzr-svn — Bazaar v2.5.2dev documentation
Using a central repository mirror
bzr svn-import svn+ssh://svn.gnome.org/svn/beagle
Ubuntu上で実行して数時間放置したら、以下のように2GBのメモリを食い尽くしてしまいました。
スラッシング状態になるまえにkillしました(笑
syasuda@dosPV:~/scripts$ hg --version
Mercurial - 分散構成管理ツール(バージョン 1.4.3)著作権 (C) 2005-2010 Matt Mackall <mpm@selenic.com> 他
いずれもバージョンの古さが残念な結果を生んでいる気がしましたので、Windows上に最新版ぽいものを導入して再検証しました。
まずはhgsubversionとbzr-svnです。
快調に動作しているぽいですが、SMB経由なので、いまいちパッとしませんね。
hgsubversionは数千リビジョンほど処理した状態で800MBのメモリを消費しています。TortoiseHg64ビット版に付属のhg.exeなので、まだまだいけるはず。
TortoiseHg
バージョン 2.4
Mercurial-2.2.1, Python-2.6.6, PyQt-4.8.6, Qt-4.7.4
bzr-svnは、すでに1万リビジョン以上を処理していますが、1.6GBのメモリを消費しています。32ビット版なので、もしかすると限界が近いかもしれません。(結果は 末尾に追記)
Bazaar
2.5 Stable Release
2.5.1 Standalone版
素朴な感想ですが、どいつもこいつもロクに検証もせずにリリースしているのが見え見えです。
# 自分に甘く他人に厳しい
分散系のVCSツールは、メモリを使いすぎのような気がします。CVSやSVNのようにフォルダを再帰的に処理するツールの方が省メモリなんでしょうねぇ。
この先、リポジトリを移行できたとしても、TortoiseXX系ツールで開いたらどうなるんだろうかと今から心配です。
(2012.07.15 追記)
Bzr-svnはout of memoryで途中で停止しました。タスクマネージャ上では1.7GBのメモリを使用していました。
C:\repos-bzr\freebsd>bzr svn-import file:///Z:/repos/freebsd
Initialising Subversion metadata cache in C:\Users\syasuda\AppData\Local\svn-cac
he\89dfe3fe-6429-4e62-b40d-062083e1e04b.
Using repository layout: root
bzr: out of memory
Use -Dmem_dump to dump memory to a file.
リビジョン数は26000くらいまで進んでいたので、23万リビジョンのうちの10%強ということですかね。
問題は、途中で止まったあと再開できないぽいことです。再度実行すると、
finding branches xxxx/XXXXXX
と最初からやり直しになってしまいました。git svn cloneだと、続きから実行してくれるんです。
64ビット版Bazaarってあるんでしょうか。あったとしても単純計算で17GBのメモリが必要ということになります。うちのWindows7マシンは16GBしか積んでませんので・・・
メモリ増設ですかorz
Git-svnも途中で止まりました。
r8868 = 294a2c8a0ea64aadd85fbc9b868757b1794a9539 (refs/remotes/trunk)
Found possible branch point: file:///home/share/repos/freebsd/head => file:///home/share/repos/freebsd/stable/2.0.5, 8852
Use of uninitialized value $u in substitution (s///) at /usr/lib/git-core/git-svn line 1723.
Use of uninitialized value $u in concatenation (.) or string at /usr/lib/git-core/git-svn line 1723.
refs/remotes/2.0: 'file:///home/share/repos/freebsd' not found in ''
ブランチごとにcloneするしかないんでしょうかねぇ。それじゃ意味なくなくないですか。
コメント