SVN/TracからGitHubにデータ移行してみた

More than 3 years have passed since last update.


前準備


  • githubに空のレポジトリを作っておく

  • 移行したいユーザを先にCollaboratorに招待しておく

  • Collaboratorに、一時的にgithubのParticipatingのメール通知をオフにしてもらう(理由は後述)


TracからGithub Issuesへのデータ移行

StackOverflowのHow to export Trac to Github Issues を参考に、trac2githubというphpスクリプトを使ってみた。



  • trac2github.cfg ファイルに移行元tracと、移行先githubの接続情報などを書く。

  • デフォルトでコメントは移行しない設定になってるので移行したいなら$skip_tickets = false;にする


  • php trac2github.phpで実行

  • 次々にissueが作られて行ったので、何の問題もなく移行できたと思いきや… issueコメントから日本語がさっぱり消えている

  • スクリプトのソース見てみると、ASCII文字以外は消されてる…のでとりあえずコメントアウトして再実行 (json_encode()で問題になるかもらしいけど問題なかった)

// Avoid non-ASCII characters, as that will cause trouble with json_encode()

//$data = preg_replace('/[^(\x00-\x7F)]*/','', $data);


  • 再実行して400件ほどのチケット移行に6-7分、そこからコメントの移行が20分くらいかかった


注意事項


  • assignされたりするとユーザにメールが飛びまくってしまうので、一時的にメール通知をオフにしてもらった(Unwatchだけだとダメだった)

  • 先に移行してからCollaborator追加すればいいかと思ったけど、assignするユーザはCollaboratorになってないとエラーになり、Issue番号が飛んでしまったのでやり直し

  • ユーザの変換ルールを設定していても、反映されるのはassignだけで、コメントとかは自分が書いたことになる(API的にできないんだと思う)


    • (Commented by hogehoge on 31 Jul 2014 03:57 UTCとかは付けてくれる)




svnからgithubへのソース移行

GitHub HelpのImporting from Subversionを参考に、まずは公式のGitHub Importerを使ってみたが、認証かかっているせいかオレオレ証明書なせいか、svnへ接続できず。


  • svn2gitでローカルgitレポジトリに変換し、pushした。


  • authors.txt用意すればauthorの変換もできるみたいだったけど記法がよく分からず、エラーになったのでそのままにしてしまった