在我的Web应用程序中,我有一个文件,它通过$ Rev $保存当前的修订版号.这项工作正常,但如果我不对该文件进行任何更改,则不会提交.
无论如何我是否可以强制单个文件始终提交到SVN服务器?
我正在使用TortoiseSVN for Windows,因此任何代码或分步说明都会有所帮助.
Can*_*der 13
基本上,您希望svnversion在文件中输出命令.
此类文件通常保留在存储库之外,并由构建脚本自动创建.我建议你这样做.如果不建立,而只是一个svn up在服务器端,只需要调用svnversion后svn up,或创建一个shell脚本来完成这两个操作.
另一方面,如果你必须将它保存在存储库中,那么调用svnversion预提交钩子将是你最好的选择.
如果安装了TortoiseSVN,则还可以使用SubWCRev工具.使用该工具获取修订版,而不是滥用$ REV $关键字.
创建一个模板文件,其中包含您的定义,可能是类似的
const long WC_REV = $ WCREV $;
在名为version.h.tmpl的文件中
在每个构建中,调用SubWCRev来创建可在应用程序中使用的"真实"文件:
SubWCRev path\to\workingcopy path\to\version.h.tmpl path\to\version.h
这将从version.h.tmpl创建文件version.h,文本$ WCREV $替换为您的工作副本当前所在的修订版本.
我想你可能不明白$ Rev $ flag是如何工作的.Rev标志的目标不是将此修订始终提交到subversion存储库中.目标是在更新时,Rev标志将始终是修订版本.您不应该将代码放入包含修订版的subversion中.Subversion非常善于为您跟踪这些信息.
您可能错过的是,您需要在文件上设置属性,以便正确处理Revision关键字.
svn propset svn:keywords "Revision" file.txt
Run Code Online (Sandbox Code Playgroud)
这将确保无论何时进行更新,$ Rev:xxx $标志都将使用当前版本进行更新.您无需担心它如何提交到存储库.