0

我转换了我们小组的两个 CVS 存储库并将它们加载到 SVN 中。但是我发现有些文件被改变了!!!

例如,static char rcsid[] = "$Revision: 1.1.1.1 $$Date: 2007/06/25 16:56:59 $";

已更改为 static char rcsid[] = "$Revision: 1.1.1.1 $$Date: 2007-06-25 16:56:59 $";

这些是实际的字符串,而不是注释。(其他一些更改的字符串在注释中,没关系)。那么为什么 cvs2svn 会这样做呢?以及如何防止 cvs2svn 这样做???我添加了 --keywords-off 选项,但这并没有什么不同。

谢谢你的帮助!

4

1 回答 1

1

当您签出文件时, CVS 将关键字(如$Date$)扩展为正确的值,而不是(您可能猜到)当您签入文件时。此外,不同版本的 CVS 以不同的样式扩展日期。在 CVS 1.12 之前,日期使用斜杠扩展,例如2007/06/25. 从 CVS 1.12 开始,日期已用破折号扩展,例如2007-06-25.

当您从 Subversion 签出文件时看到的日期格式是 Subversion 关键字扩展的结果。AFAIK Subversion 总是用破折号扩展新样式的日期。所以字符串看起来不同的原因是 Subversion 使用了不同的日期扩展样式,而不是因为这样cvs2svn做。

当您指定 时--keywords-offcvs2svn保留关键字在 CVS 中的扩展状态,即它们在签入时的形式。通常这意味着它们采用上次签文件时的格式,即值反映文件的先前版本。这很少有用。

以您期望的格式获取日期字符串的唯一方法是扩展日期字符串本身并关闭cvs2svnSVN 关键字扩展。另外,您必须配置使用“旧日期格式”进行扩展,可以通过调用(或通过编辑文件)来设置。但是,您可能希望在转换后重新启用关键字扩展,以便后续的 Subversion 修订版也扩展其关键字。因此,转换后,您必须在任何包含关键字的文件上设置属性,并且您还必须手动重新折叠关键字(例如,编辑回cvs2svn_KeywordExpander.use_old_date_format()cvs2svn_lib/keyword_expander.pysvn:keywords$Date: 2007/06/25 16:56:59 $$Date$) 在这些文件中。总而言之,这将是相当棘手的配置,可能不值得付出努力。

于 2017-07-24T15:33:24.673 回答