cvs2git迁移与git和cvs不同的二进制文件(标记为-kb)

时间:2012-07-18 19:44:30

标签: git cvs cvs2svn git-cvs

我在一个超过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

2 个答案:

答案 0 :(得分:1)

如果您的存储库是CVSNT存储库,而不是标准的CVS存储库,则可以解释您的问题。 CVS记录一次,对于所有修订文件是否为二进制文件,而CVSNT记录文件类型修订版。 cvs2svn / cvs2git只读取文件范围的二进制属性,而不是CVSNT的逐个修订版属性。因此,它不知道文件在CVSNT中已标记为二进制文件。

这是cvs2svn / cvs2git does not officially support converting from CVSNT repositories的主要原因。

答案 1 :(得分:1)

这些二进制文件是否包含$Id ...$形式的某些字符串?这对我来说是个问题(在二进制文件中用$Id$替换它),但应该在最新版本中修复,请参阅this commit

无论如何,我建议使用十六进制编辑器来找出实际上存在的差异。

我还注意到你没有使用选项文件。我不确定cvs2git使用的默认值是什么,但是值得一试使用cvs2git-example.options的自定义版本。