Svn 如何在代码中获得更新的$Revision$

Svn 如何在代码中获得更新的$Revision$,svn,keyword-substitution,Svn,Keyword Substitution,我有一个项目,我想自动嵌入修订号 在本例中,它是一个多文件perl脚本。在主文件中,我有一行如下所示: my$revision=“$revision:24$” 当我发布时,我将项目签出到我的发布目录 每当我签入对该文件的更改时,修订号都会更改。$Revision$属性在签入时更新,但不在签出时更新 问题是,主文件不会经常更改,所以即使项目中的其他文件现在是27个,主文件仍然有24个 有没有一种方法可以让主文件反映最新的版本号?svn在签出结束时打印的版本,即“签出版本27” (注意:如果按原样使

我有一个项目,我想自动嵌入修订号

在本例中,它是一个多文件perl脚本。在主文件中,我有一行如下所示:

my$revision=“$revision:24$”

当我发布时,我将项目签出到我的发布目录

每当我签入对该文件的更改时,修订号都会更改。$Revision$属性在签入时更新,但不在签出时更新

问题是,主文件不会经常更改,所以即使项目中的其他文件现在是27个,主文件仍然有24个

有没有一种方法可以让主文件反映最新的版本号?svn在签出结束时打印的版本,即“签出版本27”


注意:如果按原样使用此代码,小狗将死亡)

它类似于CVS,您可以使用$Revision$,您只需为该文件设置关键字属性,SVN就知道它应该执行关键字替换

从手册中:

“在该文件上没有设置svn:keywords属性,Subversion不会做任何特殊的事情。现在, 让我们启用LastChangedDate关键字的替换。 $svn propset svn:关键字“日期作者”weather.txt 在“weather.txt”上设置属性“svn:keywords” $ "


请查看svreversion命令。您想要做的可能需要一个后处理步骤。虽然这是真实的、信息丰富的,但它甚至不能回答所问的问题。为什么不直接使用svnversion命令的输出,而不是创建一个临时文件?以防您不想在每次运行脚本时都运行“svnversion”。
if (! -e '.version')
{
    open VERSION, '>.version';
    print VERSION `svnversion -n | cut -f1 -d:`;
    close VERSION;
}

my $revision = '$Revision: ' . `cat .version` . ' $';