我的要求很简单。 在每个文件的开头都应该有这样的块注释:
/* * This file was last modified by {username} at {date} and has revision number {revisionnumber} */
我想用来自SVN
的相应内容填充{username}
, {date}
和{revisionnumber}
。
如何通过NetBeans
和Subversion
实现这一目标? 我搜查了很多,但我无法find我所需要的。
我看了这个问题,得到了一些有用的信息。 它不完全重复,因为我正在使用NetBeans
但这个想法是一样的。 这是我的标题:
/* * $LastChangedDate$ * $LastChangedRevision$ */
然后我去Team> Subversion> Svn属性,并添加svn:keywords
作为属性名称和LastChangedDate LastChangedRevision
作为属性值。
而当我从NetBeans
提交它看起来像这样:
/* * $LastChangedDate: 2012-02-13 17:38:57 +0200 (Пн, 13 II 2012) $ * $LastChangedRevision: 27 $ */
感谢所有的支持! 我会接受我的答案,因为其他答案不包括NetBeans
信息。 不过,我给其他答案+1
。
由于这个数据只在文件提交后才存在,所以应该由SVN自己设置,而不是客户端程序。 (而客户端处理往往会被禁用或根本没有配置。)这意味着没有简单的模板/替换就像你想要的,因为然后在第一次替换之后,模板变量将会丢失。
你可以在这里找到关于SVN关键字替换的信息 。 然后像$Rev$
这样的东西可以用$Rev: 12 $
来代替。
您可以使用SubWCRev程序来做到这一点。
SubWCRev是Windows控制台程序,可用于读取Subversion工作副本的状态,并可选择在模板文件中执行关键字替换。 这通常用作构建过程的一部分,作为将工作副本信息合并到正在构建的对象中的一种手段。 通常,它可能被用于在“关于”框中包含修订号。
这通常在构建过程中完成。
如果你使用Linux,你可以在这里找到一个Linux二进制文件。 如果你愿意,你也可以使用svn log
的输出来编写你自己的。
我跟着Petar Minchev的建议,只有我把$ LastChangedRevision $标签不放在注释块中,而是把它嵌入到一个字符串中。 现在可以通过编程方式在“帮助” – >“关于”对话框中显示版本号。
String build = "$LastChangedRevision$";
稍后我可以使用将所有绒毛修剪掉的字符串在关于对话框中显示修订值。
String version = build.replace("$LastChangedRevision:", "").replace("$", "").trim();
我建议一个稍微不同的方法。
将以下标题放在源文件的顶部。
/* * 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}