SVN を Git に移行

July 6, 2025 3:56

手順

git svn init + git svn fetch を使用する。

file://192.168.0.92/SVN/hogehoge

上記のような file:// 形式の svn リポジトリは Git に移行できない。
参照先をネットワークドライブとすることで Git に移行できる。

\\192.168.0.92\SVN をネットワークドライブ Y: に割り当てし、git svn init を実行 (ドライブ文字の後ろの : (コロン)は不要)

git svn init -s --prefix=svn/ file:///Y/hogehoge
git svn fetch

エラーが発生した場合

-r オプションで次のリビジョンを指定して移行を継続できる。

git svn fetch -r 2707:HEAD

svn fetch でエラーが解決しない場合

以下のように Filesystem is corrupt と表示される場合は、svn fetch でエラーが解決できない場合がある。

r2706 = c1aaa35df4c66f91e9c34421b385753c642ca3d4 (refs/remotes/svn/trunk)
Filesystem is corrupt: Corrupt representation '2707 0 35 6486 c41ebb3235c590aa74
964875b23e64e5': Malformed representation header at C:/Users/localadmin/AppData/
Local/Atlassian/SourceTree/git_local/mingw32/share/perl5/Git/SVN/Ra.pm line 312.

このような場合は、svn のバックアップ ⇒ リストアで svn リポジトリを別の場所に再生成した後に git svn init を実行する。

svnadmin dump D:\SVN\hogehoge > hogehoge.dump
svnadmin dump --incremental -r2708:HEAD D:\SVN\hogehoge >> hogehoge.dump
svnadmin create D:\SVN\hogehoge2
svnadmin load D:\SVN\hogehoge2 < hogehoge.dump

参考

git-svnでSVN→Gitへの移行をやってみたログ
git-svnでfile形式のリポジトリを連携する
ローカルもしくはネットワークドライブのリポジトリを連携する
Repair corrupted SVN repository

$ svnadmin dump -r1:1000 my_repos > dumpfile.txt
$ svnadmin dump --incremental -r1002:1203 my_repos >> dumpfile.txt
$ svnadmin dump --incremental -r1205:HEAD my_repos >> dumpfile.txt
$ svnadmin load my_repos2 < dumpfile.txt