使用 cvs2git 从 CVS 迁移到 GIT 后清空关键字字段

Empty keywords fields after migration from CVS to GIT using cvs2git

我正在将许多存储库从 CVS 迁移到 GIT。我首先使用了cvs gitimport,但它没有正常工作。 cvs2git 工作(几乎)正常。 不幸的是,有一个问题在 cvs gitimport 中起作用,而在 cvs2git 中不起作用(这对我很重要) 使用 cvs2git 迁移后,包含关键字的字段(在特定文件中)为空:


$Header$

$修订版$

$作者$

$日期$

"filename" 修订版:1.2


我尝试了不同的配置: ctx.revision_collector,ctx.revision_reader,_keyword_handling但是效果还是一样

我使用的主要命令:

cvs2git --blobfile=cvs2git-tmp/${module}-tmp/git-blob.dat --dumpfile=cvs2git-tmp/$ {module}-tmp/git-dump.dat --username=migrationuser --encoding=ascii --encoding=utf8 --encoding=cp1250 --encoding=iso8859_2 --fallback-encoding=ascii - -retain-conflicting-attic-files ${模块}

git --裸初始化 "projectname" CD "projectname" 猫 ../../cvs2git-tmp/git-blob.dat ../../cvs2git-tmp/git-dump.dat | git fast-import git分支-DTAG.FIXUP git gc --prune=now git 重新打包 -a -d -f

有人解决过这样的问题吗?预先感谢您的回答

我使用我的 cvs-fast-export 分支的 cvsconvert 程序(原始版本现在错误地盲目地使用 -kb 来检查修订,但这与 CVS 通常所做的完全不同! )

我的版本目前没有传递任何 -k 选项,因此主要扩展关键字,因为 CVS 用户希望它们被扩展。

转换为 Git 后,如果您想继续使用每个文件的关键字扩展,那么您可以考虑使用 Git 的 $Format:$ 功能,该功能由为所有需要此类扩展的文件设置 export-subst 属性,并使用 git-archive(1) 生成您的版本。请注意,这些仅在使用 git archive 创建版本时才会扩展,但通常那是它们最有用的时候。

例如,我用类似下面的内容替换了我以前出现的 $Id$$CVSHeader$(在必要时针对不同的注释或字符串常量语法进行了改编,当然还有实际的项目名称和文件路径):

#ident  "@(#)PROJECT:FILEPATH:$Format:%D:%ci:%cN:%h$"