четверг, 11 октября 2012 г.

Ant: как получить текущий таг и номер ревизии SVN

Положим, мы имеем на машине рабочую копию какого-то кода, лежащего в ветке

https://www.example.com/svn/SomeProject/trunk
ну, или
https://www.example.com/svn/SomeProject/tags/1.0.20

Задание - получить с помощью Ант-скрипта текущую версию и номер ревизии, то есть для первого варианта это было бы:
trunk-5899
а для второго варианта -
1.0.20-6899

Одно из решений - чтение из файла .svn/entries:




 
<target name="-getVersion">
  <loadfile property="tag" srcFile=".svn/entries">
    <filterchain>
      <headfilter lines="1" skip="4" />
      <tokenfilter>
        <replaceregex pattern="/" replace="${line.separator}" flags="g"/>
      </tokenfilter>
      <tailfilter lines="1"/>
      <deletecharacters chars="\n" />
    </filterchain>
  </loadfile>
  <loadfile property="revision" srcFile=".svn/entries">
    <filterchain>
      <headfilter lines="1" skip="3" />
      <deletecharacters chars="\n" />
    </filterchain>
  </loadfile>
  <property name="version.calculated" value="${tag}-${revision}"/>
  <echo message="the tag is ${version.calculated}"/>
</target>

PS:
 Лучщее решение 

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

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