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

Dav*_*oth 5 git bazaar git-fast-import

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

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

我们的commit-message不包含mantis-id,我们只使用了"metadata-feature":

在此输入图像描述

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

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

bzr fast-export --no-plain --rewrite-tag-names/var/www/source_branch/| git快速导入

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

fatal: This version of fast-import does not support feature commit-properties.
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用选项--plain而不是--no-plain导入工作,但我们失去了与我们的错误的所有连接.

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

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

Dav*_*oth 2

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

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

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

  1. 从输入流解析提交
  2. 检查提交是否包含属性错误命令
  3. 解析 bug id 并使用提取的 bug id 修改提交消息
  4. 排除其他不支持的 bzr-fastexport only 命令(“feature”、“propertybranch nick”))

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