我在一个超过2 GB的CVS存储库上运行了一个cvs2git迁移。我编写了一个脚本,遍历新的git存储库和CVS模块,以验证对象是否相同。我发现文本文件可以很好地迁移,并且具有相同的sha1sum;但是,所有二进制文件具有不同的sha1sums,并且它们都被标记为CVS (-kb)中的二进制文件。我读过的关于cvs2git和二进制文件的其他话题通常都将问题归咎于二进制文件没有被标记为二进制(-kb),但这里的情况并非如此。还会有什么问题呢?
我执行迁移的脚本如下:
./Python-2.7.3/python ./cvs2svn-trunk/cvs2git \
--blobfile=/path/to/git-blob.dat \
--dumpfile=/path/to/git-dump.dat \
--username=cvs2git \
/cvsroot/database
cd /gitroot; mkdir database; cd database; git init
cat /path/to/git-{blob,dump}.dat | git fast-import发布于 2012-07-20 02:37:43
如果您的存储库是CVSNT存储库,而不是标准CVS存储库,则可以解释您的问题。对于所有修订,CVS记录一次文件是否为二进制文件,而CVSNT按修订记录文件类型修订。cvs2svn/cvs2git仅读取文件范围内的二进制属性,而不读取CVSNT的逐个修订版属性。因此,它不知道一个文件在CVSNT中被标记为二进制。
这是cvs2svn/cvs2git does not officially support converting from CVSNT repositories的主要原因。
发布于 2012-07-20 03:58:57
这些二进制文件是否包含一些$Id ...$形式的字符串?这就是我之前遇到的问题(它在二进制文件中用$Id$替换了它),但它应该在最新版本中得到修复,请参阅this commit。
在任何情况下,我都建议使用十六进制编辑器来找出它们之间的实际区别。
我还注意到您没有使用选项文件。我不确定cvs2git使用的默认设置是什么,但使用cvs2git-example.options的自定义版本会值得一试。
https://stackoverflow.com/questions/11549082
复制相似问题