среда, 2 января 2013 г.

SVN: как получить номер текущей ревизии из ANT, Command-line SVN client

Как оказалось, предыдущее решение работает далеко не всегда.
Привожу новый способ, используем Command-line SVN client.
 

  <target name="-revision">
  <echo message="Exec SVN Info"/>
  <exec executable="svn" outputproperty="svnInfo" dir="${tmp.vcs.dir}" failonerror="true">
    <arg line="info"/>
  </exec>
  <echo message="svn.info=${svnInfo}"/>

  <scriptdef name="getrevision" language="javascript">
    <attribute name="svninfo"/>
    <attribute name="property"/>
    <![CDATA[
    var rev = "UNKNOWN";
    var text = attributes.get("svninfo");
    arrayOfLines = text.split("\n");
    for (var i = 0; i < arrayOfLines.length; i++)
    if (arrayOfLines[i].match("Last Changed Rev:"))
    rev = arrayOfLines[i].substring(17).trim();

    project.setProperty(attributes.get("property"), rev);
    ]]>
  </scriptdef>

  <scriptdef name="getbranchname" language="javascript">
    <attribute name="svninfo"/>
    <attribute name="property"/>
    <![CDATA[
    var branch = "UNKNOWN";
    arrayOfLines = attributes.get("svninfo").split("\n");
    for (var i = 0; i < arrayOfLines.length; i++)
    if (arrayOfLines[i].match("URL:")) {
    var url = arrayOfLines[i];
    branch = url.substring(url.lastIndexOf('/')+1,url.length()).trim();
    }

    project.setProperty(attributes.get("property"), branch);
    ]]>
  </scriptdef>
  <getrevision svninfo="${svnInfo}" property="svn.revision"/>
  <echo message="svn.revision = ${svn.revision}"/>

  <getbranchname svninfo="${svnInfo}" property="svn.branch"/>
  <echo message="svn.branch   = ${svn.branch}"/>
  <property name="tag.with.revision" value="${svn.branch}_${svn.revision}"/>
</target>

Комментариев нет:

Отправить комментарий