cvs2svn 更改源代码中的"日期"字符串



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

例如 静态字符 rcsid[] = "$Revision: 1.1.1.1 $$Date: 2007/06/25 16:56:59 $";

已更改为 静态字符 rcsid[] = "$Revision: 1.1.1.1 $$Date: 2007-06-25 16:56:59 $";

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

感谢您的任何帮助!

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

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

当您指定--keywords-off时,cvs2svn使关键字保持像在 CVS 中一样展开,即它们在签时的形式。通常,这意味着它们采用上次签文件时的格式,即值反映文件的先前修订版。这很少有用。

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

最新更新