Git については、 http: //github.com/guides/import-from-subversionの手順を参照してください。
前回手動で行ったときは、以下のコマンドを使用しました。(これは、タグまたはブランチを使用しないプロジェクト用でした。タグまたはブランチがある場合、 svn2gitを使用すると、git-svn よりも良い結果が得られる可能性があります。)
cat "mysvnusername = Me Myself <me.myself@somewhere.com>" >> authors.txt
svnserve --daemon --foreground --root <SVN-REPO-PARENT-DIR>
git svn clone --stdlayout --authors-file=authors.txt --no-metadata svn://localhost/<SVN-REPO-NAME>
# push to a public repo and clone from there, to get push/pull working easily
cd <SVN-REPO-NAME>
git remote add origin git@github.com:mygithubusername/<GIT-REPO-NAME>.git
git push origin master
cd ..
rm -rf <SVN-REPO-NAME>
git clone git@github.com:mygithubusername/<GIT-REPO-NAME>.git
ただし、非標準の SVN リポジトリ レイアウトがあるため、 git svn cloneの --stdlayout の代わりに --trunk、--tags、および --branches パラメータを指定する必要があります。
リポジトリの継承履歴全体を表すには、非標準の階層の代わりに標準のフラット リポジトリ レイアウトになるように、リポジトリの順序を変更してみてください。
/branches/original-0.1
/branches/original-0.2
/branches/variantA-trunk
/branches/variantA-who-branch_for_xxx
/branches/variantA-she-branch_for_yyy
/branches/variantB-trunk
/branches/variantB-who-branch_for_zzz
...
これにより、インポート ツールがリポジトリを理解しやすくなります。それらがインポートされたら、新しいリポジトリ内でそれらをより適切に再編成できます。
また、Git 1.6.x はディープ クローニングをサポートしていると聞きました。これにより、ブランチの階層を深く調べるgit svn clone
などのパラメーターを指定できます。使用例については、この投稿--branches=branches/*/*
を参照してください。