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なんてエレメントを足そうって話も出ている模様。使い方が安定するまで、いましばらくかかりそうだ。こまめにチェックしておかないと。