我有一个基于几个不同Linux / Unix / AIX主机的C / C ++项目,因此能够引用Build#非常有用。我已经有了代码来执行经典的$ Rev $ SVN关键字并在需要时将其打印出来,但是只要我修改包含它的1文件(这恰好是最不经常编辑的文件之一),该编号才会更新在整个存储库中。)
我通常'svn导出'我的repos并在将它移动到另一个主机之前创建一个tarball,因此svnversion将无法工作(只需在已安装SVN的少数机器上返回'exported')。我想知道是否有更好的方法来获取这个数字,而不是构建一个'svn export'脚本,它将以某种方式运行svnversion并将其嵌入我的源代码中。
我将CMake用于构建系统。
答案 0 :(得分:1)
我通常'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处理文件中的实际数据对于Linux,SubWCRev的端口具有相同的功能:SVNWCRev(未测试)和漂亮的SvnRev(主动开发与SVNWCRev相反)转到SubWCRev | SVNWCRev