对于 Ant 扩展,我们有一个 Java 类,它检索本地工作副本中最高的 svnrevision 编号。该类已经支持 SVN 1.6,但我们必须使用本地 wc.db 将其更改为支持 SVN 1.7。我已经在这个主题上搜索了一段时间,但找不到明确的提示如何解决这个问题。
是否有任何示例代码可用于如何从 SVN 1.7 工作副本中检索修订号,相当于 svnversion 二进制文件的功能?
干杯彼得
对于 Ant 扩展,我们有一个 Java 类,它检索本地工作副本中最高的 svnrevision 编号。该类已经支持 SVN 1.6,但我们必须使用本地 wc.db 将其更改为支持 SVN 1.7。我已经在这个主题上搜索了一段时间,但找不到明确的提示如何解决这个问题。
是否有任何示例代码可用于如何从 SVN 1.7 工作副本中检索修订号,相当于 svnversion 二进制文件的功能?
干杯彼得
解析颠覆元信息以获取最新的修订号恕我直言不是一个好主意。
实际上,还有另一种获取修订号的标准方法。您可以使用svn:keywords
以在每次提交后获取文件中的当前修订号。有$Revision$
用于修订替换的属性。您只需要将以下字符串放入文件中并将此文件置于版本控制之下:
$Revision$
如果您需要在 ant 中使用修订属性,我建议将以下内容放入 version.properties 文件中:
revision=$Revision$
然后包含在build.xml
with 语句中:
<property file="build.properties"/>
然后您将能够在构建脚本中使用修订号:
<echo message="Deploying revision ${revision}" />
另请注意,您需要显式启用svn:keywords
使用颠覆属性,以便$Revision$
在您的文件中替换为实际值。如果您version.properties
用于获取修订号值,则需要运行以下命令:
svn propset svn:keywords Revision version.properties
不确定这是否适用于您的情况,但如果我想在构建过程中使用修订号,这是我在项目中最常使用的方法。这种方法绝对比从工作副本元信息中获取修订号更好。
SVNKit,我知道的唯一的 Java SVN API,只支持 Subversion 1.6.5。但也许您正在寻找的功能已经在工作?值得一试,imo。
SVNKit 是不是太简单了:SVNKit alpha 版本已经支持 SVN 1.7工作副本格式......所以试一试......