svnAntでリビジョンを取る

svnAntでチェックアウトしてきたワーキングコピーのリビジョンを取りたいと思った。使用したsvnAntはr2144のもの。

コマンドラインで考えるならば、通常はsvnversionを使うのだが、svnAntにはこのコマンドのエイリアスが無い。よろしい、ならばinfoだ。

<target name="print_revision">
    <typedef resource="org/tigris/subversion/svnant/svnantlib.xml"/>

    <svn javasvn="true">
        <info file="${wc.dir}"/>
    </svn>

    <echo message="ビルド対象リビジョン:${svn.info.rev}"/>
</target>

エラーが出た。

Class org.tigris.subversion.svnant.Info doesn't support the "file" attribute.

ドキュメントにはfile属性が定義できるって書いてあるぜ?わけがわからんのでソースを眺めてみる・・・名前がtargetになっとる。

では、やり直し。

<target name="print_revision">
    <typedef resource="org/tigris/subversion/svnant/svnantlib.xml"/>

    <svn javasvn="true">
        <info target="${wc.dir}"/>
    </svn>

    <echo message="ビルド対象リビジョン:${svn.info.rev}"/>
</target>

またエラーが出た。

Failed to set info properties

verboseオプション付けてant走らせたところ、ClassCastExceptionが発生している。なぜに・・・。

一縷の望みをかけて、最新ドキュメント(r2230)参照。・・・infoエレメント自体が消えてる!?ということは、別の機能で置き換え可能だってことか。

じゃあ・・・statusか。

<target name="print_revision">
    <typedef resource="org/tigris/subversion/svnant/svnantlib.xml"/>

    <svn javasvn="true">
        <status path="${wc.dir}" revisionProperty="wc.revision"/>
    </svn>

    <echo message="ビルド対象リビジョン:${wc.revision}"/>
</target>

で、実行。

print_revision:
      [svn] Using javasvn
Svn : Status
     [echo] ビルド対象リビジョン:53

きた!そうか、これで足りるからinfo消えたのか・・・。

どうもstableには程遠いみたいだな、こいつ。メーリングリストのログ見てみると、latestRevisionなんてエレメントを足そうって話も出ている模様。使い方が安定するまで、いましばらくかかりそうだ。こまめにチェックしておかないと。