2012-01-25 52 views
0

我有一个在几个不同的Linux/Unix/AIX主机上构建的C/C++项目,因此能够引用Build#非常有帮助。我已经有了代码来执行经典的$ Rev $ SVN Keyword事件,并在需要时将其打印出来,但是只要我修改包含它的1个文件(这恰好是最不经常编辑的文件之一)在整个存储库中)。在导出的C文件中嵌入SVN修订号#

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

我使用CMake作为我的构建系统。

回答

1
  1. 获得“此”号码究竟是
  2. 哪个“这个”rev-no?最后在WC树中提交,WC-repo的头版修订版
  3. 你有哪些操作系统?

我通常使用“svn出口”我的回购协议,并将其移动到另一台主机之前创建一个压缩包,所以svnversion,如果

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

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

基于Windows的TSVN用户,我用我的生成的脚本SubWCRev,以获得和存储一些存储库信息

  • 提交后客户机钩进行SubWCRev.exe <path> Builder.tpl Builder.bat ... call Builder.bat,其中生成器模板包含svn export ... z:\trunk$WCDATE=%Y%m%d$-r$WCREV$ ,并在模板每个宏扩展到真实的数据在subwcrev处理文件
  • 我包括模板,其中有WCDATE建造过,也与subwcrev

预处理对于Linux,PO SubWCRev的RT具有相同的功能有:SVNWCRev(未测试)和漂亮的SvnRev(这是积极开发违背SVNWCRev),还有一些延伸到SubWCRev | SVNWCRev

+0

我在Linux(RHEL5)箱做开发,但部署是由SUSE,RHEL5,RHEL6,Debian,AIX,Solaris等盒子完成的。我希望代码中的版本库版本能够嵌入Debug日志等,以便用户在报告错误时可以看到它。 – Yeraze

+0

''svnversion'在WC中,一些'svnlook'子命令,如果存储库在本地文件系统中,'svn info' + grep在WC或导出目录 –