ほげにっき

hogedigoの日記

TracのTicketをExcelやCSVからインポートするプラグイン

TicketImportPlugin – Trac Hacks - Plugins Macros etc.
巷でちょっと話題になっている。ちょうどまとめて大量にTicketを登録する必要があったので試してみた。


Trac Lightningの最新(ベータ版?)には含まれている様だが、自分の環境はTrac(0.11) on Linuxだったのでpluginを手動でインストールする。


Machine-wide installation(サーバのpython環境にインストール)はカンタン。

(for Trac0.10)
easy_install http://trac-hacks.org/svn/ticketimportplugin/0.10
(for Trac0.11)
easy_install http://trac-hacks.org/svn/ticketimportplugin/0.11


Trac環境(インスタンス)毎にインストールしたい場合はTicketImportPlugin – Trac Hacks - Plugins Macros etc.からeggをダウンロードして、Trac Adminから登録すればよろし。


Excelファイルを扱いたい場合は、別途xlrdというライブラリが必要とのこと。
http://pypi.python.org/packages/source/x/xlrd/xlrd-0.6.1.zip(バージョンは最新ではないかもしれないので注意)をダウンロード、解凍し、xlrdディレクトリをpythonのsite-packagesディレクトリにコピーする。python -c 'import xlrd'を実行してエラーが出なければOK。


Tracを再起動。Trac ADMIN UIのManage Pluginsページより、TicketImportを有効にする。

これで上部メニューにImportが追加される。


使用方法はインストールしたTicketImportのページに書かれている。
ざっと要約。


ワークシートは以下を含む必要がある

  • 最初の行にimportするフィールド名
  • 以降の行にimportするデータ

フィールド名として指定できるのは・・・

The fields must be Trac fields. The valid fields for this Trac instance are: ticket or id, summary, reporter, owner, description, type, status, priority, milestone, component, version, resolution, keywords, cc, estimate, billed, remain, and..

おおっ!estimate, billed, remainてのは別pluginで追加したカスタムフィールドなんだが、対応している!
カスタムフィールド対応も嬉しいけど、静的ページだと思っていたヘルプが、カスタムフィールドを見て動的に表示されていたことに、ちょびっと感動(^_^)
使用できるフィールド名

  • ticket or id
  • summary
  • reporter
  • owner
  • description
  • type
  • status
  • priority
  • milestone
  • component
  • version
  • resolution
  • keywords
  • cc
  • 各カスタムフィールド

フィールド名は、大文字小文字は同一視される。


必須フィールドはticketまたはsummary。これがキーになるのだな。

  • summaryをキーにする場合・・・同じsummaryのticketが存在すればフィールドの更新、存在しなければ新規ticketの追加。
  • ticket(id)をキーにする場合・・・同じticket idが存在すればフィールドの更新、ticket idが空ならば新規追加。存在しないticket idが指定された場合はエラー。

summaryをキーにすると、同じsummaryのticketを管理出来ない。自分の環境では重複summaryが存在するのでticketフィールドを使用しなければだわ。。
カスタムレポートをCSVでエクスポート→編集→インポートの流れで大量ticketの更新も簡単に出来てイイ!(^_^)b


では、さっそく試してみよう。
↓みたいなエクセルを作成

ユーザーにメールアドレスが入っているので黒く塗りつぶしてます。
ちょっとした事情でsummaryに重複した値が入ってるので、ticket列が必要。新規追加なのでticket列は空。このファイルを[File to import:]で選択して、[Upload file and preview import]ボタンを押下!


↓みたいなpreviewが表示される。

指定されていないフィールドは、Tracで設定されているデフォルト値が設定されるらしい。デフォルト値はTrac Admin UIで指定可能。


previewみてOKならば[Execute import]ボタンを押下!
あっさり成功!(^o^)/


こりゃ便利だ。。
ちなみにチケット更新時にはticket_changeテーブルもちゃんと更新されているみたい。Change Historyにも「Batch update from file 」のコメントでちゃんと追加されていた。今つくっているScrumもどきpluginではticket_changeが重要な情報になるので、これは嬉しい。


採用!(^o^)b