将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 及其衍生版安装 xsltproc 和 jing
$ 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 的 问题描述 字段中。
附加信息
XSL 转换:bug-export.xslt
XML 验证:bug-export.rnc
为 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的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0727d2fac4c5b4c4066ca7c07e60bf747bc921017f7e9ac19420a51fb3e25922 |
|
MD5 | 525319b14f56d7c92349675cb6c4126e |
|
BLAKE2b-256 | c1c46a7424e5286f758d217c86d9ad28c580380cb903a8e8969d5cf92d3f10f6 |