直接从Perl脚本获取文件的SVN关键字($ Id $)

时间:2014-08-15 03:59:26

标签: perl svn

在没有调用系统SVN安装的情况下,是否有任何Perl方法或模块可以获取给定文件的SVN关键字?

谢谢!

2 个答案:

答案 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更改。