Windows使用Redmine與轉檔紀要

最近準備要將用了十年(!)的問題追蹤系統Track+改為Redmine。當年使用Track+有其歷史因素,主要是當時有Open source,又是Java開發的,因此拿來加了簡體與繁體中文語言檔,又修改了一些網頁以適合我們兩岸團隊使用,沒想到一路就用了十年,中間有部份專案用過Trac 0.10,但並未普及,主要是既有資料沒有轉換到Trac的SQLite裡,自然無法順利轉換到新系統。這次要導入Redmine就必須匯入資料才行。

Redmine安裝

Windows裡安裝Redmine的最讚選擇:Bitnami Redmine Stack,用預設值安裝即可,內定會使用80 Port。

Redmine釋義

Redmine是使用Ruby on Rails,Ruby是紅寶石之意,Red-Mine應該就是具有紅色寶礦的涵義吧?

Redmine資料結構簡述

Redmine的schema還算簡單易懂,主要的狀況發生在projects與issues兩個資料表的lft、rgt欄位,所幸研究了一下後終於找到解釋的網站並有了處理方法。

首先在Redmineのチケット登録でのレコード生成調査看到issues資料表的欄位說明,第5回 SQLで木構造を扱う~入れ子集合モデル (1)入れ子集合モデルとは何か這篇則解釋了lft、rgt欄位存放的Nested Set的原理,又找到實際的資料範例說明:[MySQL][Redmine] 削除してしまったチケットを復活させる。有了這些基本認識後才有辦法寫轉檔程式,將Track+的TWorkitem匯出為issues資料表。

▼ Nested set範例 nested set

簡單說就是把Ticket記錄依專案名稱+Ticket號碼排序,lft與rgt分別啟始為1和2,再逐筆加2,當專案編號變換時,把此專案Ticket第一筆的lft與Ticket最後一筆的rgt寫入projects該專案記錄,如果有使用子Ticket,則root_id與parent_id也要額外再寫入。使用專案名稱排序的原因是Redmine的專案選單排序無法指定,預設是以projects.lft來排列,如果想要專案下拉選單仍依專案的英文字母排序,在產生lft時就要自己先排好。

大致的匯入SQL是:

truncate table issues;
alter table issues AUTO_INCREMENT=1;

INSERT INTO issues(id, tracker_id, project_id, subject, description, due_date, category_id, status_id, assigned_to_id, priority_id, fixed_version_id, author_id, lock_version, created_on, updated_on, start_date, done_ratio, estimated_hours, parent_id, root_id, lft, rgt, is_private, closed_on) VALUES (...);

issues.id可以使用原有的TWorkitem.WORKITEMKEY,讓新舊兩個系統的Ticket編號相同,可以節省許多資料核對的工夫。

Redmine設定

Redmine有幾個免費的Android client可以用,使用前必須在後台將Web Service選項打開:

redmine web service

另外,轉檔過程中需要頻繁參考Redmine的MySQL資料表,使用下列指令讓外部也可以取存到MySQL:

grant all privileges on *.* to 'root'@'%' identified by 'your_root_password' with grant option

幾個Redmine的重要資料夾:

  • Redmine系統目錄:[Redmine安裝目錄]\apps\redmine
  • Redmine設定目錄:[Redmine安裝目錄]\apps\redmine\conf
  • 附件目錄:[Redmine安裝目錄]\apps\redmine\htdocs\files\西元年\月份

目前安裝了的外掛

用Redmine的好處之一就是有很多的外掛可以使用,但使用了幾個發覺版本標示不準確,雖然標示2.6版相容,但掛上後卻會錯誤,似乎是外掛需要建立新的資料表,但外掛卻不會自動建立?這個有賴Redmine使用先進們協助了。目前安裝了下列外掛:

參考

##

您可能也會有興趣的類似文章

簡睿

服務於軟體業的資訊老兵。興趣廣泛,學習力佳,樂於分享所知所學。

您可能也會喜歡…

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *