导出的C文件中的嵌入式SVN修订版#

时间:2012-01-25 21:53:11

标签: svn

我有一个基于几个不同Linux / Unix / AIX主机的C / C ++项目,因此能够引用Build#非常有用。我已经有了代码来执行经典的$ Rev $ SVN关键字并在需要时将其打印出来,但是只要我修改包含它的1文件(这恰好是最不经常编辑的文件之一),该编号才会更新在整个存储库中。)

我通常'svn导出'我的repos并在将它移动到另一个主机之前创建一个tarball,因此svnversion将无法工作(只需在已安装SVN的少数机器上返回'exported')。我想知道是否有更好的方法来获取这个数字,而不是构建一个'svn export'脚本,它将以某种方式运行svnversion并将其嵌入我的源代码中。

我将CMake用于构建系统。

1 个答案:

答案 0 :(得分:1)

  1. 获取“此”号码完全
  2. 哪个“这个”rev-no? WC树的最后一次提交,WC-repo的头部修订
  3. 你有哪个操作系统?
  4.   

    我通常'svn export'我的repos并在将它移动到另一个主机之前创建一个tarball,所以svnversion

    出口前必须在WC内部调用,显然

    如果你有tarball中的代码,也许你想在文件名中修改 ,而不是在档案内的文件中,如果需要全局resision-id来获取信息?

    作为基于Windows的TSVN用户,我在构建脚本中使用SubWCRev来获取和存储一些存储库信息

    • 提交后客户端挂钩执行SubWCRev.exe <path> Builder.tpl Builder.bat ... call Builder.bat,其中Builder-template包含svn export ... z:\trunk$WCDATE=%Y%m%d$-r$WCREV$,模板中的每个宏都扩展为subwcrev处理文件中的实际数据
    • 我的include-template,也有WCDATE构造,也用subwcrev预处理

    对于Linux,SubWCRev的端口具有相同的功能:SVNWCRev(未测试)和漂亮的SvnRev主动开发与SVNWCRev相反)转到SubWCRev | SVNWCRev