5

我们使用 bazaar-vcs 已经有几年了,但由于一些长期存在的烦人的错误决定迁移到 git 并停止了 bzr 的开发。

在使用 bazaar 时,我们广泛使用了 bazaar 的“错误跟踪元数据”功能 ( http://doc.bazaar.canonical.com/bzr.dev/en/user-reference/bugs-help.html )。所以每个 bug-fix 提交都包含对应 mantis-bug-Id 的 ID,这样我们就有了 source 和 mantis 之间的链接。

我们的 commit-message 不包含 mantis-id,我们只使用了“元数据功能”:

在此处输入图像描述

对我们来说,不要丢失这些信息非常重要,所以我需要一个解决方案来以某种形式迁移这些错误链接。

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

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

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

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

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

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

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

4

2 回答 2

2

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

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

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

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

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

于 2013-03-26T08:40:13.510 回答
1

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

我意识到只修改'bzr fast-export --plain' 来做我想做的可能更容易。

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

bzr fast-export --git-branch=master --plain | git fast-import
于 2016-07-27T15:43:39.987 回答