いるもの
- MacOSXかWindowsのマシン
- MacならGitXもあると便利
- subversionにアクセスできること
- インターネットにつながる
- やる気
基本手順
gitは分散リポジトリであり、subversionの履歴が取得できる環境であればローカルのPCでできる。
あまりにもコミット数が多い場合はsubversionのリポジトリがあるサーバでやった方が良いかもしれないが、
githubとの接続もあるのでそれでも普段開発する(gitを使うであろう)PCでやるのが良さげ。
- gitとgit-svnをPCに入れる
- githubにアカウントつくってsshつながるようにする
- プロジェクト単位で以下をやる
- githubにプロジェクトを作成
- git-svnでローカルリポジトリにcloneをつくる
- githubへpushする
なお、無料アカウントだと300MB縛りがあるのでバイナリをぼこぼこコミットしたプロジェクトを移行するのは注意が必要そうだ。お金を払えば60GBまでいけるので必要に応じて有料を検討しても良いかもしれない。paypalのdonateと連動してユーザが払ってくれるとうれしいな。
https://github.com/account/billing
git + github のセットアップ
別ページに分離。Windowsの場合、msysgitでgit-svn使えるのかはよく知らないのでcygwin偏をみること
svn2gitのセットアップ
git svnだとsubversionのタグはgitのremote branchになってしまいgitのタグとして移行できない(概念上は正しい変換なのだけど)。タグもタグとして移行するにはsvn2gitを使う。
svn2gitはrubyのpackageで公開されている
sudo gem install svn2git
(Mac OS Xの場合: ruby入れた記憶ないんだけど入ってた)
subversionからの移行
http://github.com/guides/import-from-subversion
1. githubにプロジェクトのリポジトリを作成する
2. ローカルでsubversionからインポートする
svn2gitの場合
mkdir LOCAL_DIR; cd LOCAL_DIR;
svn2git --authors AUTHORS SVN_REPO_URL
- svn2gitはディレクトリをつくるオプションがないのでカレントディレクトリで作業する
- なおこれはsvnリポジトリを branches / tags / trunk に階層化している人向け
git svnの場合
git svn clone --authors-file=AUTHORS -s SVN_REPO_URL LOCAL_DIR
- なおこれはsvnリポジトリを branches / tags / trunk に階層化している人向け
3. githubをremote branchに追加してpush
cd LOCAL_DIR
git remote add origin git@github.com:GITHUB_USERNAME/REPO_NAME.git
git push origin master
4. 何となくキレイな体でということでgithubからローカルリポジトリをcloneして作業する
cd PROJECTDIR
git clone http://github.com/GITHUB_USERNAME/REPO_NAME.git