最初我们使用Redmine作为问题管理系统,现在我们计划迁移到Tuleap系统。
两个系统都具有将问题导入/导出到 .csv 文件的功能。
我想知道是否有标准/简单的方法来迁移问题。
status
问题内的主要项目是title
和description
。
由于两个系统都可以导出包含他们需要的项目标题的 csv 文件,因此某些标题是不同的。
它需要脚本从一个系统映射到另一个系统,代码片段如下所示。
如果它们不支持应用程序(我的意思是迁移),它可以适用于其他 ALM 系统。
#!/usr/bin/env python
import csv
import sys
# read sample tuleap csv header to avoid some field changes
tuleapcsvfile = open('tuleap.csv', 'rb')
reader = csv.DictReader(tuleapcsvfile)
to_del = ["remaining_effort","cross_references"]
# remove unneeded items
issueheader = [i for i in reader.fieldnames if not i in to_del]
# open stdout for output
w = csv.DictWriter(sys.stdout, fieldnames=issueheader,lineterminator="\n")
w.writeheader()
# read redmine csv files for converting
redminecsvfile = open('redmine.csv', 'rb')
redminereader = csv.DictReader(redminecsvfile)
for row in redminereader:
newrow = {}
if row['Status']=='New':
newrow['status'] = "Not Started"
# some simple one to one mapping
newrow['i_want_to' ]= row['Subject']
newrow['so_that'] = row['Description']
w.writerow(newrow)
导出的 csv 中的某些项目无法在 tuleap 中重新导入,例如
remaining_effort
, cross_references
.
这两项显示在.csv
从 tuleap 问题导出的文件中。
提醒中的“remaining_effort”和“cross_references”类型的数据是什么?
有同样的问题,csv解决方案对我来说太有限了:
可以使用 REST API 或直接读取 SQL 数据库从 Redmine 中提取问题。可以使用REST API在 Tuleap 中创建工件。您“只”需要一个中间脚本来从 Redmine 中提取问题,然后将它们导入 Tuleap。
我在 Python 中创建了这样一个脚本:
我使用它将数百个问题从 Redmine 移植到 Tuleap,这足以满足我的需求。