2012-02-13 39 views
17

我的要求很简单。在每个文件的开头应该有这样的块注释:在源代码中包含SVN修订号

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

我想填充{username}{date}{revisionnumber}SVN适当的内容。

我如何通过NetBeansSubversion来实现?我搜查了很多,但我找不到我需要的东西。

+0

可能重复[颠覆:修正数据添加到在提交代码文件(http://stackoverflow.com/questions/2008843/subversion-add-revision-data-to-code-file-on-提交) – geoffspear 2012-02-13 15:23:39

回答

13

我看着this的问题,并得到了一些有用的信息。这不完全重复,因为我正在与NetBeans合作,但这个想法是相同的。这是我的头:

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

然后我去团队>颠覆> SVN性能,并添加svn:keywords作为属性名称和LastChangedDate LastChangedRevision的属性值。

;当我从NetBeans提交它看起来是这样的:

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

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

+1

这也可以在Eclipse中完成:右键单击项目树。选择** Team - > Set Property **,从** Property name **列表中选择'svn:keywords'并输入到**输入一个属性**文本框:'LastChangedDate LastChangedRevision' – ecle 2012-02-13 15:55:33

+0

尝试添加svn:keywords ,NB 8中没有任何反应。 – Yster 2014-09-29 12:48:56

4

你可以用The SubWCRev Program来做到这一点。

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

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

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

+0

如果使用'Linux'也会怎么样? – 2012-02-13 15:24:56

+0

@PetarMinchev查看我更新的答案。 – RedFilter 2012-02-13 15:26:23

10

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

您可以在SVN的关键词替换here附近找到信息。然后像$Rev$这样的东西可以被$Rev: 12 $取代。

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} 
4

我跟着斯托Minchev的建议,只是我把$ LastChangedRevision $标记不在注释块中,但将其嵌入到字符串中。现在可以通过编程方式在“帮助” - >“关于”对话框中显示版本号。

String build = "$LastChangedRevision$"; 

我稍后可以使用将所有绒毛修剪掉的字符串在关于对话框中显示修订值。

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

我以同样的方式使用它。 – Semaphor 2016-03-01 09:01:34