使用commit-properties将bazaar迁移到git以链接修复的错误

时间:2013-01-25 09:10:34

标签: git bazaar git-fast-import

我们使用bazaar-vcs已经有好几年了,但是由于一些长期存在的烦恼而停止了bzr的开发,因此决定迁移到git。

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

我们的提交消息不包含mantis-id,我们只使用了“元数据功能”:

enter image description here

对我们来说,放弃这些信息非常重要,因此我需要一种解决方案来以某种形式迁移这些错误链接。

我已经尝试使用快速导入/快速导出命令将我们的bazaar存储库导出/导入到git中:

bzr fast-export --no-plain --rewrite-tag-names / var / www / source_branch / | git fast-import

不幸的是我收到以下错误:

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

但是,如果我使用选项 - plain 而不是 - no-plain 导入有效,但我们会丢失与错误的所有连接。

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

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

2 个答案:

答案 0 :(得分:2)

Git Fast-import不支持元数据属性,因此无法仅使用现有工具迁移这些信息。

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

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

  1. 从输入流中解析提交
  2. 检查提交是否包含属性错误命令
  3. 解析错误ID并使用提取的错误ID修改提交消息
  4. 排除其他不受支持的bzr-fastexport命令(“feature”,“property branch nick”))
  5. 关于此重写器的更多信息+代码可在此处找到:http://www.fusonic.net/en/blog/2013/03/26/migrating-from-bazaar-to-git/

答案 1 :(得分:1)

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

我意识到将'bzr fast-export --plain'修改为我想做的事情可能更容易。

我在LP: #1606973提交了上游(bzr快速导出)错误并附加了一个对我有用的解决方案。修改fastimport / exporter.py后,我刚刚做了:

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