Subversion + ant

cvs時代は、
antで、チェックアウト→build→tag
とかやったもんだけど、
svnだとどうすんの?
ということでsvnantについて。


チェックアウト(or Export)はいろんなところで解説されているので、
タグ(copy)について


http://subclipse.tigris.org/svnant.html
上記で落とした関連jarは./libにあるとする。
build.xml自体は、プロジェクトルート/buildにあるので、
プロジェクトルート/build/libにあるということ。)

       <property name="svn.checkout.dir" value="${tmp.dir}/checkout"/>

       <property name="svn.userid"             value="[user]" />
       <property name="svn.password"           value="[pass]" />
       <property name="svn.url"                value="[url]" />

       <property name="svn.trunk.url"          value="${svn.url}/trunk" />
       <property name="svn.tag.url"            value="${svn.url}/tags" />
       <property name="svn.revision"           value="HEAD" />

       <!--現在時刻取得-->
       <tstamp>
               <format property="now.date" pattern="yyyyMMdd" />
       </tstamp>
       <!--svnAnt-->
       <path id="svnant.class.path">
               <fileset dir="lib">
                       <include name="*.jar" />
               </fileset>
       </path>
       <typedef resource="org/tigris/subversion/svnant/svnantlib.xml"
               classpathref="svnant.class.path"/>

       <target name="tag">
               <svn username="${svn.userid}"
                       password="${svn.password}">

                       <copy srcUrl="${svn.trunk.url}"
                               destUrl="${svn.tag.url}/REL_${now.date}"
                               revision="HEAD"
                               message="${now.date}" />
               </svn>
       </target>

一応上記でタグが打てる。
タグが存在するのに、再度タグタスクを行った場合、
タグ内が変になります。


REL_20080707があるのにタグタスク実行すると、
REL_20080707/trunkが出来る。
さらにタグ付与するとエラー(trunkがすでにあるよ)


と。
なんかチェックする方法もなさそうなんだよね・・・


力技だと、
タグ指定でexportすることで代用とか、
常に上書きとして、いったんdel発行とか、
REL_yyyyMMddhhmmssというテンプレートにするとかあると思うけど。