最近一直在用 [Bazaar] 作为版本控制工具,想把以前 [Subversion] 的一堆东西转过来,所以在它的[网站]上看文档找工具,上面工具列得挺全的,都好几个,可是试用下来,在 Windows 下基本上都没成功:
- [bzr-fastimport]:这个是 Bazaar 的插件,把其他前端导出来的数据导入到 Bazaar 中,其中的数据格式用的是 [git-fast-import] 中所定义的流格式。它有很多前端,其中一个就是 Python 为 [Subversion] 写的。导出来的数据没什么问题,但导入的时候有几个问题:
- Windows 本身的文件都是 CRLF 作为行结束符的,而 UNIX 上是 LF,通常把这种叫做 DOS 文件和 UNIX 文件。这个插件处理 DOS 文件有问题,会忽略一些 CR 字符,导致应该读的数据量大于读到的数据量。我不太懂 Python,只看到它是一行一行读取数据,还不清楚是 Python 本身的问题还是它程序本身的问题。
- 处理二进制文件似乎有问题,比如 PNG 文件头中包含有 ^Z(ASCII 26),通常是作为文件结束符的,而出现在这里是不应该结束的,这样它就直接报文件结束错误。
我刚往 Bazaar 的邮件列表上发了信,不知道作者什么时候能修正。 - [svn2bzr]:是把使用
svnadmin dump产生的 dump 文件导入到 Bazaar。还是没有成功,懒得一点一点跟了。 - [bzr-svn]:支持 Bazaar 直接访问 Subversion 仓库,但似乎需要打补丁,可能还需要重新编译什么的,太麻烦,这个就没试。




问题解决
后来实在没法解决,就往 Bazaar 的邮件列表上发了 [bug report],然后 [Paul Moore] 指出是由于读文件的字符模式和二进制模式的问题,并且 [James Westby] 顺便把补丁也贴上了,我试了以后,发现不对,根本就解析不了,研究以后发现需要把命令所在行最后的回车给去掉才可以。然后讨论以后可以确定是 svn-fast-export 在输出的时候没有设置二进制模式,从而问题完全解决。[Ian Clatworthy] 说征得作者同意 svn-fast-export 可以包含在 bzr-fastimport 中了。
Post new comment