svn - 将 subversion 存储库编号获取到代码中

标签 svn debugging testing revision versions

我想实现一种在代码中记录项目版本的方法,以便在测试时使用它并帮助跟踪错误。 似乎最好使用的版本号就是 Subversion 的当前修订版号。有没有一种简单的方法可以将这个数字挂接到(在我的例子中是 C++)头文件或其他东西,然后我可以在代码中获取?我想这是提交后 Hook 之类的?

有没有人有任何实现此方法的经验(请分享代码?),或者可以提出更好的替代方案? 谢谢。

最佳答案

两种方式:

在代码中嵌入 $Id$$Revision$。然后在文件上设置 svn:keywords="Id Revision" 属性。这将为您提供该源文件的最后修改版本。适用于较小的项目和脚本。

或者,使用 Makefile 驱动进程和命令行工具 svnversion。 (特定于语言——这应该适用于 C/C++)

echo -n "#define VERSION 1.0.1-" > version.h
svnversion -n . >> version.h

或者使用 sed 和 version.h.in 的一些更复杂的构建脚本。然后只是#include version.h

这将为您提供存储库版本号,该版本号会随着每次提交/更新而变化,并且对于大多数项目来说可能是更合适的版本号。

注意:我还使用了我手动更新的人类可读版本字符串。该示例将给出:版本:1.0.1-r13445

~J

关于svn - 将 subversion 存储库编号获取到代码中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16248/

相关文章:

SVN显示工作目录中过时的文件

javascript - 查看控制台是否可用

c++ - 程序在没有调试符号的情况下崩溃,使用它们运行良好(在任何一种情况下都没有优化或任何东西)

scala - 默认情况下禁用调试时如何运行 sbt 测试进行调试?

java - 反射不适用于 Spring Autowiring 参数

testing - 使用 UIAutomator 的 Appium Android 测试在尝试图像上传功能时显示错误

svn - 如何防止 svn 扩展 $Id$ 关键字?

svn - 与SVN等效的 “git reset --hard”

svn - 在没有工作副本的情况下创建颠覆分支或标签

python - Ruby 的 VCR 库是否有 python 替代品?