如何验证使用cvs2git的CVS到Git的转换?

时间:2017-07-29 23:52:08

标签: git cvs cvs2git

我正在使用cvs2git(cvs2svn的一部分)将CVS存储库迁移到Git中。当我运行该工具时,它似乎工作得很好,我最终得到了一个工作的git存储库。但是,我需要一种方法来验证转换是否成功。

我至少需要确认最新git提交中的文件内容与最新CVS提交的文件内容相同。我还想验证,如果可能的话,提交作者匹配,提交的时间戳是正确的,标签是否保留(我知道标签/分支模型并不完全匹配,但是至少标签名称被保留为分支名称),以及任何其他重要的数据来验证。我有大约30个存储库要转换,所以我会很感激任何自动化的方法。

到目前为止我唯一能做的就是对目录进行校验和,以验证文件是否相同,但每个文件夹中都有一个.cvs目录,所以我不会这样做。认为这会奏效。

1 个答案:

答案 0 :(得分:1)

  

至少我需要确认最新git提交中的文件内容与最新CVS提交文件的内容相同。

您可以使用find列出所有文件,并排除.git.cvs。将结果传递给sha1sum之类的东西以获取所有文件的校验和。捕获结果。

$ find cvs_checkout -name .cvs -prune -o -type f -print0 | xargs -0 sha1sum > cvs.sum

$ find git_checkout -name .git -prune -o -type f -print0 | xargs -0 sha1sum > git.sum

然后区分两个校验和文件。应该没有差异。

$ diff cvs.sum git.sum
  

我还想验证,如果可能的话,提交作者匹配,提交的时间戳是正确的,标签是否保留......

鉴于Git和CVS的模型有多么不同,我不知道这会有多大用处。

但是如果你真的想,我想你会为每个将git log somefilecvs log somefile进行比较的文件写一些东西(自从我这么久以来,它已经很久了使用CVS我甚至不记得那是否是一个有效的命令。 git log采用了许多格式化选项,您甚至可以使用与CVS相同的格式进行吐出。

对于代码,您可以针对预期的代码列表检查git tag -l。然后,您可以依次检查每个标签,并将其内容与上面的find / diff命令进行比较。

祝你好运!

相关问题