在源代码中包含SVN修订号

时间:2012-02-13 15:19:30

标签: java svn version-control netbeans

我的要求很简单。在每个文件的开头应该有一个块注释,如下所示:

/*
 * This file was last modified by {username} at {date} and has revision number {revisionnumber}
 */

我想使用{username}中的相应内容填充{date}{revisionnumber}SVN

如何通过NetBeansSubversion实现这一目标?我搜索了很多,但我找不到我需要的东西。

5 个答案:

答案 0 :(得分:13)

我查看了this问题并获得了一些有用的信息。它并不完全重复,因为我正在使用NetBeans,但这个想法是一样的。这是我的标题:

/*
 * $LastChangedDate$
 * $LastChangedRevision$
 */

然后我去团队> Subversion> Svn属性并将svn:keywords添加为属性名称,将LastChangedDate LastChangedRevision添加为属性值。

当我从NetBeans提交时,它看起来像这样:

/*
 * $LastChangedDate: 2012-02-13 17:38:57 +0200 (Пн, 13 II 2012) $
 * $LastChangedRevision: 27 $
 */

感谢大家的支持!我会接受我的回答,因为其他答案不包括NetBeans信息。不过,我将+1给予其他答案。

答案 1 :(得分:10)

由于此数据仅在文件提交后存在,因此应由SVN本身设置,而不是客户端程序。 (客户端处理往往会被禁用或根本没有配置。)这意味着没有像你想要的简单模板/替代品,因为在第一次替换之后,模板变量将会丢失。

您可以找到SVN关键字替换here的信息。然后$Rev$之类的内容可以替换为$Rev: 12 $

答案 2 :(得分:4)

您可以使用The SubWCRev Program执行此操作。

  

SubWCRev是Windows控制台程序,可用于读取   Subversion工作副本的状态,并可选择执行关键字   在模板文件中替换。这经常被用作一部分   构建过程作为合并工作副本信息的手段   进入你正在建造的物体。通常它可能会被用来   在“关于”框中包含修订号。

这通常在构建过程中完成。

如果您使用Linux,则可以找到Linux二进制文件here。如果您愿意,也可以使用svn log的输出编写自己的。

答案 3 :(得分:4)

我遵循了Petar Minchev的建议,只是我将$ LastChangedRevision $标记放在注释块中,但是将其嵌入到字符串中。现在可以在帮助中以编程方式显示修订号 - >关于对话框。

String build = "$LastChangedRevision$";

稍后我可以使用一个整理了所有绒毛的字符串在about对话框中显示修订值。

String version = build.replace("$LastChangedRevision:", "").replace("$", "").trim();

答案 4 :(得分:0)

我建议采用略有不同的方法。

将以下标题放在源文件的顶部。

/*
 * This file was last modified by {username} at {date} and has revision number {revisionnumber}
 */

然后添加像这样的shell脚本

发布更新,结帐脚本

USERNAME=# // use svnversion to get username
DATE=# // use svnversion to get revisio nnumber
sed -e "s#{username}#${USERNAME}#" -e "s#{date}#${DATE}#" ${SOURCE_CONTROL_FILE} > ${SOURCE_FILE}

预提交脚本

cat standard_header.txt > ${SOURCE_CONTROL_FILE}
tail --lines $((${LENGTH}-4)) ${SOURCE_FILE} >> ${SOURCE_CONTROL_FILE}