Trac 0.10.4 で動いている古い課題管理を、BitBucketへ移行する作業を行いました。以下記録。
チケットデータの入っているDBを用意
Trac リポジトリ中の db/trac.db にチケットが入ってます。
trac.db が sqlite version 2 形式なので、まずこれを 3にコンバートします。
sqlite2, 3 の両方を入れてコマンドラインでコンバートもできます。Windows でツールを入れてたので、SQLiteStudio(3.1.0)にて、sqlite2で開いて、[Database]-[Convert Database Type]で3に変換することでコンバート完了。
Bitbucket形式へ変換
以下のスクリプトが使えます。
https://bitbucket.org/secdev/trac2bitbucket
./hoge/db/trac.db がある状態で、
$ python ticket.py -o exported_issues.zip --tracdir hoge
もし次のエラーが出たら、日本語を含むせいなので(たぶん)
TypeError: write() argument must be str, not bytes
ソース中の open(… “w”)を”wb”に変更してもう一度。
Bitbucketへのインポート
Bitbucket上で新しいリポジトリを作成、課題管理を on に。設定メニューから上記の exported_issues_zip をインポートすると、trac にあったチケットがすべて入ります。
既存のリポジトリにインポートすると既存のチケットは全部消えてしまうので注意。この場合は一旦エクスポートし、二つのzip中の.json の内容をマージして差し戻す。issue ID等が衝突するのでマージはスクリプトを書いての作業が必要。
それから、trac上のユーザー名とBitbucket上のユーザー名が違う場合、各ユーザーについて zip 内 db-1.0.json のユーザー名を置換する必要がある。(やっておかないとどこかの他人にチケットをアサインしてしまう)