1

最初我们使用Redmine作为问题管理系统,现在我们计划迁移到Tuleap系统。

两个系统都具有将问题导入/导出到 .csv 文件的功能。

我想知道是否有标准/简单的方法来迁移问题。

status问题内的主要项目是titledescription

4

3 回答 3

0

由于两个系统都可以导出包含他们需要的项目标题的 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 问题导出的文件中。

于 2012-10-18T04:47:05.897 回答
0

提醒中的“remaining_effort”和“cross_references”类型的数据是什么?

于 2012-10-19T06:32:45.587 回答
0

有同样的问题,csv解决方案对我来说太有限了:

  • 跟踪器和 csv 内容之间的字段匹配必须完全匹配
  • 你不能导入附件
  • 你不能链接工件
  • ...

可以使用 REST API 或直接读取 SQL 数据库从 Redmine 中提取问题。可以使用REST API在 Tuleap 中创建工件。您“只”需要一个中间脚本来从 Redmine 中提取问题,然后将它们导入 Tuleap。

我在 Python 中创建了这样一个脚本:

  • 它有一个插件方法,因此它可以从任何错误跟踪器导入问题/错误,然后将它们保存到任何其他错误跟踪器。
  • 目前它只支持从 Redmine SQL 数据库中提取问题并使用 REST API 导出到 Tuleap。
  • 可以扩展它(新插件)以从其他跟踪器(bugzilla/mantis/gitlab)中提取问题。
  • 可以扩展它(新插件)以生成 Tuleap xml 文件,而不是使用 Tuleap REST API 导入工件(XML 在这里更强大)。

我使用它将数百个问题从 Redmine 移植到 Tuleap,这足以满足我的需求。

看看https://github.com/jpo38/TrackerIO

于 2018-10-04T11:52:45.933 回答