跳转到主要内容

将MantisBT问题迁移到XML

项目描述

Mantis2XML旨在简化从MantisBT问题迁移到其他问题管理系统。它生成一个XML文件,该文件可以被转换成其他格式,并随后被问题管理系统导入。

目前,仅支持迁移到Launchpad缺陷。特别是提供了一个.XLST文件和shell脚本,以大大简化将问题迁移到Launchpad缺陷的过程。

对不耐烦者的快速指南

创建一个名为~/.mantis2xml的文件,其中包含你的Mantis实例的URL,具有对Mantis manager 访问权限的用户名和密码。例如:

[mantis]
url: http://mantis.example.com/
user: scott
password: beam-me-up

按照以下说明,为 Debian 及其衍生版安装 xsltprocjing

$ apt-get install xsltproc jing tar bzip2 -y

安装 Bazaar 并从 Launchpad 获取 mantis2xml

$ apt-get install bzr -y
$ bzr branch lp:mantis2xml

安装 mantis2xml,以确保安装所有依赖项

$ cd mantis2xml
$ python setup.py install

现在运行转换您的 Mantis 实例的 shell 脚本

$ ./dump_all_issues.sh

如果您在问题跟踪系统中只有一个项目,上面的命令可能就是您需要的所有内容。如果您在 Mantis 中有多个项目,请查看文件 dump_all_issues.sh 并按照顶部说明的步骤操作。

如果一切顺利,您将在 ~/tmp/mantis/1 目录中看到一些文件被创建

$ ls -al ~/tmp/mantis/1
issues.txt
issues.mantis.xml
issues.launchpad.xml
issues.launchpad.xml.tar.bz2
  • issues.txt:问题的简要概述

  • issues.mantis.xml:从 MantisBT 获取的所有问题的转储

  • issues.launchpad.xml:为导入 Launchpad Bugs 而转换的问题

  • issues.launchpad.xml.tar.bz2:验证成功后创建

故障排除

如果您没有看到 issues.launchpad.xml.tar.bz2,则意味着 issues.launchpad.xml 的验证失败。错误已报告在标准输出中,但您可以通过以下命令再次查看它们

$ jing -c ./bug-export.rnc ~/tmp/mantis/1/issues.launchpad.xml

可能的最常见的问题是重复的问题。Mantis 支持多个问题之间的关系,包括 duplicated of 类型的关系(用于重复项),而 Launchpad Bugs 支持每个问题零个或一个重复项。如果您遇到这个问题,您可以在 issues.launchpad.xml 文件中手动修复它,或者在 Mantis 中修复它,确保每个问题有零个或一个重复项,然后重新运行 dump-all-issues.sh

Mantis 到 Launchpad Bugs 的映射

Mantis 提供的字段 重现步骤附加信息 在 Launchpad Bugs 中没有直接对应项。此外,Mantis 提供详细的问题 关系,如

  • duplicate of

  • has duplicate

  • child of

  • parent of

  • related to

这些关系可以出现多次。Launchpad Bugs 仅支持 duplicate of,它可以出现零次或一次。其他所有关系均不受支持。为了适应这些差异,这些字段包含在 Launchpad Bugs 的 问题描述 字段中。

附加信息

为 mantis2xml 做贡献

mantis2xml 是在匆忙中开发的,只用了几天时间,包括这份文档,它的制作时间可能比人们想象的要长。存在已知问题,并且当然还有很多改进的空间。

不幸的是,作者 不打算进一步开发 mantis2xml。如果您考虑接管这个项目,作者将很高兴将接力棒传给您。

以下是一些可能相关的信息

简要历史

此应用程序是从 sp-mantis2github 衍生而来,这是一个通过 SOAP 与 MantisBT 通信并通过 API 与 Github 通信的 Python 脚本。此应用程序工作得非常好,不仅能将问题迁移到 Github,还能在 Mantis 中插入链接到 Github 中新创建的问题的注释。

设计决策

进行了一个简短的验证:我尝试移除对github包的调用,并用对launchpadlib包的调用来替换这些调用。由于sp-mantis2github的编写方式,用另一个API替换一个API并不是一个简单任务。这个想法由于我预留的迁移所需时间非常少,证明是“太多”了。

因此,我简单地从github移除了依赖项,并假设我们对于可以后来转换为Launchpad Bug导入格式的XML文件非常满意。以下是所采取的步骤:

  • 从Github API移除依赖项。这通过删除一些代码或更改函数/方法名称来实现,这样它们就永远不会被调用。

  • 从提供对象mc_issue_getResponse的SOAP响应中获取XML表示。当输入命令mantis dump issue时,就会发生这种情况,这会将问题以XML格式输出到标准输出。

  • 在获取上述XML表示时去除命名空间。这种做法大大简化了创建后处理的.XLS文件的过程,该文件处理生成的.XML文件。

  • 将XML转换为Launchpad Bug导入格式的过程通过一个shell脚本提供,如上所述。我实际上尝试用Python自动化目前在shell脚本中执行的操作,但大约在40个问题之后崩溃。不:我不想发现它失败的原因。然后我简单地移除了逻辑,保留了shell脚本。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分布

mantis2xml-1.3.tar.gz (13.9 kB 查看哈希)

上传时间 源代码

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面