シリーズ・進撃の巨リポジトリン:停滞

  • 投稿日:
  • by
  • カテゴリ:

ややウンザリ状態です。

・hgsebversion

・git-svn

・bzr-svn

それぞれでFreeBSDのリポジトリを変換しようとしています。

 

HgSubversion - Mercurial

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> 他

 

20120714224415

 

いずれもバージョンの古さが残念な結果を生んでいる気がしましたので、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するしかないんでしょうかねぇ。それじゃ意味なくなくないですか。