ローカル svn リポジトリを git svn clone する

ローカルドライブ上の file:/// でアクセスしている svn リポジトリを git svn で吸い上げようとしてエラーにぶつかったこと、ありませんか?
「FS format が想定外」とか言われ、えー('A`) みたいな。

C:\work>git svn clone -s file:///c:/repos/proj
Initialized empty Git repository in c:/work/proj/.git/
Couldn't open a repository: Unable to open an ra_local session to URL: Unable to
 open repository 'file:///c:/repos/proj': Expected FS format '2'; found format '4'
 at C:\Git/libexec/git-core/git-svn line 1919


この場合、git svnリポジトリに直接見るから svn リポジトリの形式に左右されるわけで、要は別の手段で間接的にリポジトリにアクセスすればいいわけです。

間接的にリポジトリにアクセスする方法として WebDAV (http://) 経由がありますが、これでやろうとすると、apache を入れたり、svnadmin dump しておいて別サーバにリストアして〜とか、ちと手間がかかるのでもう1つの方法を使うことにします。
svn 独自プロトコルsvn:// でのアクセスです。

ローカルなのでやり方は簡単、svn に入ってる svnserve を使います。
Windows用に公開されているパッケージによっては、この svnserve が含まれていないパッケージもあるようですが、win32svn のパッケージには含まれていますので、svnserve が無い!って方は win32svn のパッケージを入れてください。

そして、別コマンドラインを開いておいて、そこで svnserve を立ち上げます。
--root にはリポジトリが置かれているフォルダを指定します。

C:\svn\bin>svnserve -d --root c:\repos


で、git svn clone。 svn://localhost/ でアクセスするのがポイント。

C:\work>git svn clone -s svn://localhost/proj
        A       branch1
r1 = 34d6a8bec48deaedb46a260e3c91c7abe75cb817 (refs/remotes/branch1)
        A       trunk
r1 = 1fda83f8ae9762fae93ef9ccdd6ae32a3fff8ef0 (refs/remotes/trunk)
        A       tag2
r1 = b67e41ba9b5e987b74e223e2795cc53a86fc6938 (refs/remotes/tags/tag2)
        A       branch2
r1 = 718ecc7a4365c23cde362cbb06d9567ca1ce7a9f (refs/remotes/branch2)
        A       tag1
r1 = f76868e65640df7b61328d3ac6daa320a9048e4b (refs/remotes/tags/tag1)
Checked out HEAD:
  svn://localhost/proj/trunk r1

これでサクッと git に吸い出し完了です。
svnserve は CTRL+C で終了してください。

1点問題があって、msysgit だと日本語ファイル名が化けるようです。 こちらは msysgit ではなく cygwin の git を使えば回避できる、ということらしいです(未確認)。