2009-08-31 45 views
2

某些版本控制产品可以将感兴趣的值嵌入到文件中,因为它是从存储库中检出的。通常你在源文件中放入一些魔术字符串,并在结帐时更新。就像你写的“$ revision = xxx”一样,如果你签出修订版832,它会变成“$ revision = 832”。 SVN是否有这样的功能,可能使用属性?SVN中的动态嵌入字段?

回答

4

你在keyword substitution之后,我想。

+0

啊,有时候会有一个简单的答案。我搜索了文档,但我无法想出正确的关键字(无双关语)来搜索。 – Jay 2009-08-31 16:17:49

2

是的,REDBERD书的描述keyword substitution,是权威的,但这里是快速破败。

在foo.pl:

# Nifty perl trick to get just number and not "$Revision:" string. 
our $revision = '1.0-' . qw$Revision: 0 $ [1]; 

然后运行:

svn propset 'svn:keywords' 'Revision' foo.pl 

如果你的所有的Perl文件需要扩大$修订$,看看自动道具。

设置您的〜/ .ssh/config文件:

enable-auto-props = true 
*.pl = svn:eol-style=native;svn:executable;svn:keywords=Id LastChangedBy LastChangedRevision Revision Author 

(在这里,我也确信Perl脚本是可执行的,和EOL风格是正确的,因此用户可以在Linux上结帐, Windows或Mac,没有问题,除了修订版,我还包括了我最常用的关键字。)

这甚至适用于像TortoiseSVN这样的Windows客户端(请参阅设置页面中的按钮,它将在编辑器中打开配置文件)。

自动道具最大的缺点 - 它们是每个用户,所以所有提交者必须具有一致的设置。在未来的版本中有一些关于允许per-repo配置的讨论。

〜J