前準備
- 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の変換もできるみたいだったけど記法がよく分からず、エラーになったのでそのままにしてしまった