subversionからgithubへの移行

いるもの

  • MacOSXかWindowsのマシン
  • MacならGitXもあると便利
  • subversionにアクセスできること
  • インターネットにつながる
  • やる気

基本手順

gitは分散リポジトリであり、subversionの履歴が取得できる環境であればローカルのPCでできる。
あまりにもコミット数が多い場合はsubversionのリポジトリがあるサーバでやった方が良いかもしれないが、
githubとの接続もあるのでそれでも普段開発する(gitを使うであろう)PCでやるのが良さげ。

  1. gitとgit-svnをPCに入れる
  2. githubにアカウントつくってsshつながるようにする
  3. プロジェクト単位で以下をやる
    1. githubにプロジェクトを作成
    2. git-svnでローカルリポジトリにcloneをつくる
    3. 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