Как оказалось,
предыдущее решение работает далеко не всегда.
Привожу новый способ, используем 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>
Комментариев нет:
Отправить комментарий