我想测试何时实现内码记录项目的版本的一种方式,所以它可以使用,以帮助跟踪错误。 看来使用也只是从Subversion目前的版本号最好的版本号。 有一个简单的方法来挂钩这一数字为(C ++在我的情况)的头文件什么的,我可以在随后得到的代码在哪里? 我想这是一个后提交钩或东西吗?
有没有人有这个实施的任何经验(有代码共享,好吗?),或者可以建议一个更好的选择? 谢谢。
我想测试何时实现内码记录项目的版本的一种方式,所以它可以使用,以帮助跟踪错误。 看来使用也只是从Subversion目前的版本号最好的版本号。 有一个简单的方法来挂钩这一数字为(C ++在我的情况)的头文件什么的,我可以在随后得到的代码在哪里? 我想这是一个后提交钩或东西吗?
有没有人有这个实施的任何经验(有代码共享,好吗?),或者可以建议一个更好的选择? 谢谢。
虽然漂亮,修改关键字伎俩更新只当它在该版本所更改的文件 - 如果你不改变文件,那么它会继续反映旧的版本。
如果你想要的软件总是反映整体的版本号,那么你就必须钻研相关SVN项文件,并提取它,这是不是太困难的(这是一个XML文件)。
维基百科目前这对他们的版本页面 ,以表明正在运行的实时软件的版本; 该代码是在这里 -查找getSvnRevision()方法。
方法有两种:
嵌入的$ id $或代码中的$版本$。 然后设置svn:在文件关键字=“ID修订”属性。 这会给你的源文件的最后修改版本。 适合较小的项目和脚本。
或者,使用生成文件驱动过程和命令行工具svnversion,如果。 (特定语言 - 这应该对C / C ++的工作)
echo -n "#define VERSION 1.0.1-" > version.h
svnversion -n . >> version.h
或与SED和version.h.in一些更复杂的构建脚本。 然后,只需#包括version.h中
这会给你的资料库的版本号,这将改变每次提交/更新,并可能是大多数项目更合适的版本号。
注:我也用人类可读的版本字符串,我手动更新。 这个例子将给: 版本:1.0.1-r13445
〜Ĵ
您还可以使用SubWCRev是TortoiseSVN的一部分。
SubWCRev是可以用来读取Subversion工作副本的状态,并可选在模板文件执行关键字替换Windows控制台程序。 这是经常被用来作为构建过程为结合工作拷贝信息到你正在构建的目标的手段的一部分。 通常,它可以用于包括在“关于”框中的版本号。
http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html
在Makefile中,添加:
SVNDEV := -D'SVN_REV="$(shell svnversion -n .)"'
CFLAGS := $(SVNDEV) ...
那么你可以使用宏SVN_REV
在你的代码,例如,在任何地方:
printf ("Version: SVN %s\n", SVN_REV);
您可以使用svn:keywords
属性,以使Rev
关键字。
然后,您可以用$Rev$
在你的代码和更新时SVN就会自动展开$Rev: 256 $
,可然后解析...
在颠覆手册更多信息
一个好的了最新的解决方案:
创建一个Makefile
包含以下行(在相同的文件夹YourFile.dox
):
sed "s~RevNumber~$(shell svnversion ../)~g" YourFile.dox > YourFileDummy.dox; doxygen YourFileDummy.dox
而YourFile.dox
应该包含这样的:
...
PROJECT_NUMBER = "Revision RevNumber"
...
现在:
sed
替代RevNumber
与输出的.dox svnversion
(在你的资料库主文件夹执行)并保存修改后的文件YourFileDummy.dox
doxygen
是上执行YourFileDummy.dox
生成的文档