cvs2svn更改源代码

时间:2017-07-19 19:40:51

标签: cvs2svn

我转换了我们小组的两个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选项,但这并没有什么区别。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

当您检查文件时,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中展开,即以 中的检查时的形式。通常这意味着它们采用的格式是上次检查文件 out 时的格式,即使用反映文件先前版本的值。这很少有用。

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