0

我在超过 2 GB 的 CVS 存储库上运行了 cvs2git 迁移。我写了一个脚本遍历新的 git 存储库和 CVS 模块来验证对象是否相同。我发现文本文件迁移得很好并且具有相同的 sha1sum;然而,所有的二进制文件都有不同的 sha1sum,它们在 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
4

2 回答 2

1

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

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

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

于 2012-07-19T19:58:56.617 回答
1

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

这是 cvs2svn/cvs2git官方不支持从 CVSNT 存储库转换的主要原因。

于 2012-07-19T18:37:42.713 回答