最近 redmine_importer を使ったので報告です。
今回 akiko-pusu/redmine_importer(juno/redmine_importer系列らしい)
https://github.com/akiko-pusu/redmine_importer
を Redmine 1.1.3 で使いました。
開発者が日本人なだけに日本語表示は問題なくCSVファイルの日本語コードも
UTF8, EUC, SJIS から選べます。
ほぼ問題なくインポートできましたが一点だけ、これはオリジナル版からそうなのですが
カテゴリを app/controllers/importer_controller.rb の
category = IssueCategory.find_by_name(row[attrs_map["category"]])
で見つけています。カテゴリはプロジェクト毎に設定されるので
同じカテゴリ名でもプロジェクトが違うと別の番号が付くことがあります。
これに対応するためには
category = IssueCategory.find_by_project_id_and_name(project != nil
? project.id : @project.id,row[attrs_map["category"]])
のようにする必要がありました。
(leovitch版では多分
category = IssueCategory.find_by_project_id_and_name(project.id,
category_name)
未確認)
---
IdlySphere版 redmine_importer を使ってチケットの履歴をインポート
していて気がついたのですが2番目以降の履歴が登録されないようです。
IdlySphere版以前では基になるチケットを
issues = Issue.find :all, :conditions => query.statement, ...
issue = issues.first
的なことをして得ていてそのタイミングで
issue のインスタンス変数 @current_journal が nil に初期化されて
いたのですが IdlySphere版ではその処理の前に
if @issue_by_unique_attr.has_key?(attr_value)
issue = @issue_by_unique_attr[attr_value]
end
的な最適化を入れているため @current_journal に最初の履歴が
入り続けているようです。
どう直すのがスマートかわからないのですが取りあえず以下の
ように強引に @current_journal を再初期化して対応しました。
--- app/controllers/importer_controller.rb.org
+++ app/controllers/importer_controller.rb
@@ -199,6 +199,7 @@
if update_issue
begin
issue = issue_for_unique_attr(unique_attr,row[unique_field])
+ issue.instance_eval { @current_journal = nil }
# ignore other project's issue or not
if issue.project_id != @project.id && !update_other_project
---