Sunday, 25 October 2009

Getting svn revision number from NAnt

http://stackoverflow.com/ has got the svn revison number in the footer which is quite cool especially when you have a build script that deploys the application automatically.

This is how you can get the revision from svn:
svn info --xml [repository url]

which returns
<?xml version="1.0"?>
<
info>
  <
entry
    
kind="dir"
    
path="."
    
revision="6">
    <
url>http://svnserver/svn/svnrevisiondemo/trunk</url>
    <
repository>
      <
root>http://myserver/svn/svnrevisiondemo</root>
      <
uuid>cb474c29-17db-0310-ba2e-db2fec5ab780</uuid>
    </
repository>
    <
commit
      
revision="6"
>
      <
author>cosmin</author>
      <
date>2009-10-25T17:09:08.315246Z</date>
    </
commit>
  </
entry>
</
info>

The most important bit in this output is the revision attribute of the commit node. This is the NAnt task that peeks into the xml above and extracts the revision number:
    <target name="find-svnrevision">
        <
property name="svn.revision" value="0"/>
        <
exec program="svn"
           
commandline='info "${project::get-base-directory()}" --xml'
           
output="svninfo.xml"
           
failonerror="false"/>
        <
xmlpeek
           
file="svninfo.xml"
           
xpath="/info/entry/commit/@revision"
           
property="svn.revision"
           
failonerror="false"/>
        <
echo message="Building revision number: ${svn.revision}"/>
    <
delete file="svninfo.xml" failonerror="false" />
  </
target>

0 comments:

Post a Comment