把 Mantis 的資料倒進 Redmine

[華語, cmn-Hant-TW]

想要把 mantis 1.2.x 的資料倒進 redmine 2.4.x 的時候出了點問題,內建的 ./lib/tasks/migrate_from_mantis.rake 怎麼試都失敗,後來發現有人用 perl 寫了一套轉換系統 mantis2redmine 給 mysql 用,只要把資料庫設定一下,然後輸入想要轉換對應,category, workflow, user 等,然後等他跑完就倒進去了。 唯一要注意的是語系問題,如果 utf8 的字轉過去變亂碼,除了兩邊資料庫的設定要對外,在 mantis2redmine 裡面呼叫 DBD-mysql 的地方 mysql_enable_utf8 也要給他設一下,到這裡資料庫應該就算是倒好了。

跑一下 project 列表有出來,但是只要一開 issues 頁面就狂吃 500 錯誤,主要的錯誤訊息是這個:
Error viewing some issues: ActionView::Template::Error (undefined method `-' for nil:NilClass):

看了一下 log 也看不出倒底是什麼造成的,然後只好回去手動一個一個檢查資料庫的欄位,發現只要 lft lgt 值是 NULL 就會炸掉,後來看到這篇有遇到類似的情況,就照著下這個指令

# ruby script/rails runner 'Project.rebuild_tree!'
# ruby script/rails runner 'Issue.rebuild!'

跑完之後頁面果然就恢復正常。

再巡了一下,東西能用是能用,大部份該過來的東西都有過來,但是有些在原本 mantis 下就沒有的欄位,轉換到 redmine 之後也只能先套預設值,像是 project 建立時間或是 identifier 等。雖然不影響操作但看起來實在有點礙眼,所以又花了些時間手動改資料庫內的欄位。搬家總是要打掃一下的嘛,打掃完之後的 redmine 看起來舒服多了。

Leave a Reply

Your email address will not be published. Required fields are marked *