我正在尝试将this Bazaar repo 转换为 Git.
bzr branch lp:onboard
cd onboard
git init
bzr fast-export --plain . | git fast-import
但是我得到这个错误:
22:10:43 Calculating the revisions to include ...
22:10:43 Starting export of 2952 revisions ...
22:10:43 1000/2952 commits exported at 448681/minute
...
22:10:43 1000/2952 commits exported at 239415/minute
fatal: Path onboard/copying not in branch
fast-import: dumping crash report to .git/fast_import_crash_3847
brz: broken pipe
尝试过
bzr
和 Breezy
,两种不同的操作系统(Arch Linux 和 Ubuntu)。
这是
fast-export
的 bzr
功能中的错误。
在修订版 1 中,添加了目录
python-virtkey-0.3/
和 sok-0.23/
,其中包括文件 sok-0.23/copying
.python-virtkey-0.3/
更名为 python-virtkey/
和 sok-0.23/
为 onboard/
,因此 sok-0.23/copying
为 onboard/copying
.onboard/copying
被重命名为 COPYING
.
问题是,
fast-export
仅针对修订版 2 发出此消息:
commit refs/heads/master
mark :2
committer Henrik Nilsen Omma <[email protected]> 1155815101 +0100
data 18
rename and cleanup
from :1
D python-virtkey_0.3.dsc
D python-virtkey_0.3_i386.changes
D sok_0.23.dsc
D sok_0.23_i386.changes
它没有迭代重命名的目录并为其中的每个文件发出重命名。
要解决该问题,您需要在存储库历史记录中找到所有此类目录重命名并相应地修复快速输入流。如果这样做,请注意快速导入格式也包含二进制数据,因此您可能无法在不破坏二进制文件的情况下使用文本编辑器执行此操作。
如果您检查
bzr log -v | grep '/ =>'
,您会看到有 14 个目录重命名,您需要手动修复所有这些重命名以解决该问题。
即使您没有收到错误消息,如果不修复它,结果也可能是错误的,因为重命名没有完成,如果文件在重命名后会被编辑,第一次提交实际上会创建它,而旧文件仍然存在等等。
所以最好的方法可能是报告错误(如果尚未完成)并等待适当的修复,然后仔细调查转换结果以确保没有更多此类问题可能不会导致失败但只是在错误的结果。
bug应该是这个:https://bugs.launchpad.net/brz/+bug/1890216
修复已经可用:https://code.launchpad.net/~cjwatson/brz/fastimport-fix-directory-renames/+merge/410767
自 1.5 年以来,但似乎没有人愿意整合它。