如何在C源代码或Makefile中包含我的项目的SVN修订版(不是文件修订版)?
答案 0 :(得分:10)
我们在makefile中使用这样的一行:
REPO_REV := $(shell svnversion -n)
将工作副本的修订号存储到make变量中。要在C代码中使用它,您可以让makefile使用该值在编译器命令行上定义宏(类似于-DREPO_REV=$(REPO_REV)
的gcc)。
答案 1 :(得分:4)
来自SVN book:
新用户经常对
$Rev$
关键字的工作原理感到困惑。由于存储库具有单个全局增加的修订版号,因此许多人认为这个数字由$ Rev $关键字的值反映。但是$Rev$
展开以显示文件更改的最后修订版,而不是更新它的最后修订版。理解这一点可以解决这个问题,但是经常会感到沮丧 - 如果没有Subversion关键字的支持,你怎么能自动将全局修订号放到你的文件中呢?要执行此操作,您需要进行外部处理。 Subversion附带了一个名为
svnversion
的工具,它就是为此而设计的。它会抓取您的工作副本并生成它找到的修订的输出。您可以使用此程序以及一些其他工具将该修订信息嵌入到您的文件中。有关svnversion
的详细信息,请参阅第9章Subversion完整参考中的“svnversion—Subversion Working Copy Version Info”部分。