在没有调用系统SVN安装的情况下,是否有任何Perl方法或模块可以获取给定文件的SVN关键字?
谢谢!
答案 0 :(得分:0)
如果您不涉及SVN,则该文件只是一个文本文件。它是否受版本控制不是文件的属性,而是存储在同一级别的隐藏.svn文件夹中。这意味着,如果要在不涉及SVN的情况下分析文件,则必须将其视为纯文本文件。但是,扩展的SVN关键字确实遵循某种语法(或者SVN本身在扩展一次之后将无法找到它们)。 在您的情况下,任何具有被替换关键字的文件最有可能具有类似
的行$Id: ActualIdHere $
如果关键字尚未被替换,则只有$Id$
。 Perl非常能够从已知语法中提取数据。特别是考虑到你应该知道哪些字符可以构成一个Id(提示:如果可能的话,避免使用$)。
要回答您的具体问题:像/^\$Id\: (.*) \$$/
这样的正则表达式应该找到您要查找的ID并将其存储在$1
中。那当然假设那条线上没有别的东西。但只有你知道如何以及在哪里拥有什么样的关键词,所以如果你努力的话,你需要制作正则表达式或者提供更详细的信息。
答案 1 :(得分:0)
您可以尝试这样的方法,将svn id转换为perl变量。
my ($SVN_ID) = ('$Id: ActualIdHere $' =~ /^\$Id\: (.*) \$$/);
print $SVN_ID;
但对于SVN,您还必须在SVN中启用关键字替换,请参阅svn documentation
注意:inserted id是上次更改文件时的值。 id可能比其他文件的ID更改。