2013-01-25 17 views
5

我们使用bazaar-vcs多年,但由于一些长期存在的令人烦恼的bug并停止开发bzr,我们决定迁移到git。移植集市与commit-properties连接bug修复

在使用bazaar时,我们广泛使用了集市的“bug跟踪器元数据”功能(http://doc.bazaar.canonical.com/bzr.dev/en/user-reference/bugs-help.html)。因此,每个错误修复提交都将ID包含到相应的mantis-bug-Id中,这样我们就可以在源代码和螳螂之间建立链接。

我们提交的消息不包括螳螂-ID,我们只用了“元数据功能”:

enter image description here

这对我们来说是非常重要的,我们不`吨失去这些信息使我需要一种以某种形式迁移这个bug链接的解决方案。

我已经尝试过导出/使用快进/快导出命令导入我们的集市仓库到混帐:

BZR快速出口--no平原--rewrite标签的名字在/ var/www/source_branch/| Git的快速导入

不幸的是,我得到以下错误:

fatal: This version of fast-import does not support feature commit-properties. 

不过,如果我使用该选项--plain代替--no平原进口的作品,但我们输了所有连接到我们的错误。

是否有一些解决方案/解决方法从bzr迁移到git而不丢失所有这些对我们来说非常重要的bug链接?

[编辑]:我刚刚分析了非常简单的快速导入/快速导出文件格式。应该可以编写一些脚本来修改文件并将(属性错误...)行移入相应的提交消息行。但是,如果有开箱即用的解决方案,我会很乐意听到它:)

回答

2

Git快速导入不支持元数据属性,因此无法单独使用现有工具迁移这些信息。

由于没有响应,并且失去所有这些bug-id对我们来说没有选择,所以我编写了一个快速导出流重写器,它能够以git理解的格式重写流,但所有的bug都以id包含信息。

C#的重写工作通过执行以下步骤:

  1. 解析从输入流犯
  2. 检查是否提交包含一个属性的错误命令
  3. 解析错误ID和修改提交消息与所提取的错误ID
  4. 排除其他不受支持BZR-fastexport仅命令( “特征”, “属性分支缺口”))

关于此重写器的更多信息+代码可在此处找到:http://www.fusonic.net/en/blog/2013/03/26/migrating-from-bazaar-to-git/

+0

发布二进制文件的机会是否可能?在这里放置一个C#环境。 – Kieveli

1

我有类似的需求。我尝试了David的重写器,但它产生了git import会失败的输出。我怀疑这是在提交中重命名某些文件时的一个微妙的错误。

我意识到只需修改'bzr fast-export -plain'就可以做我想做的事情。

我在LP: #1606973上提交了上游(bzr快速导出)的错误,并附上了适用于我的解决方案。修改fastimport/exporter.py后,我只是这样做了:

bzr fast-export --git-branch=master --plain | git fast-import