You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在应用中存储Subversion版本信息?最佳实践探讨

问题:利用Subversion关键字获取最新修订版本号并展示

Subversion提供了$Rev$关键字,当包含该关键字的文件被提交时,它会被替换为类似$Rev: 1843 $的内容,其中的版本号是本次提交生成的修订版本号。

我希望在应用中利用该信息,让编译后的应用存储最新修订版本号,并在关于页面中与应用版本一同展示。考虑到任意文件都可能是最后提交的,实现此需求的最佳实践是什么?

我曾考虑在Core类中创建一个方法,接收该字符串并解析出版本号,然后每个类在构造函数中调用此方法,传入Subversion处理后的字符串,由该方法存储最大的版本号,但这种方式似乎不太合理,想了解是否有更优实现方案。

另外,Subversion是否有用于提交时间的关键字?


解答

一、获取最新修订版本号的最佳实践

不用在每个类里分散处理版本号,更高效的方案是:

  • 单独维护版本信息文件:创建一个和业务逻辑无关的文件(比如VersionInfo.java、Version.h),只在这个文件中嵌入$Rev$关键字。确保Subversion能自动替换该文件的关键字(需在svn属性中设置svn:keywords包含Rev)。
  • 构建阶段统一处理:在构建脚本(Maven/Gradle/Makefile等)中,通过Subversion命令行工具svn info直接提取当前工作副本的最新修订号,自动生成包含版本号的配置文件或直接注入到应用的编译参数中。应用运行时只需读取这个统一的版本信息,无需在运行时解析多个文件的版本号做比较。

这种方式既避免了冗余代码,又能确保获取的是整个项目的最新修订号,而非单个文件的提交版本。

二、Subversion的提交时间关键字

有的,Subversion提供$Date$关键字,当文件被提交时,该关键字会被替换为该文件的提交时间,格式示例:$Date: 2024-05-20 14:30:00 +0800 (Mon, 20 May 2024) $。

如果需要整个项目的最新提交时间,同样建议在构建阶段通过svn info命令提取,而非依赖单个文件的$Date$关键字,这样能保证时间的准确性。


内容的提问来源于stack exchange,提问作者Hikari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 09:58:23