Что нужно subwcrev? - PullRequest
       5

Что нужно subwcrev?

2 голосов
/ 23 февраля 2011

Я написал скрипт сборки в ant.Исходный код моего проекта имеет версию в svn.

В рамках моего проекта мне пришлось написать класс Java, который содержит информацию из Subversion.В общем, скрипт сборки работает отлично.Будет собрана вся необходимая информация, кроме одной.Это имя автора, который внес последние изменения в репозиторий.Хотя я читаю руководство , у меня все еще есть идеи.

Мой вопрос к вам: существует ли способ также получить эту деталь с помощью скрипта ant?

Спасибо

РЕДАКТИРОВАТЬ:

<target name="version" description="set version number">
    <echo message="Setting version information ..." />
    <copy file="build/Version.java.template"
        tofile="./cq/apps/src/de/anna/util/Version.java" /> 
    <tstamp>
        <format property="TODAY_De"
         pattern="yyyy/MM/dd HH:mm:ss"
         locale="de,De"/>
    </tstamp>
    <replace file="./cq/apps/src/de/anna/util/Version.java">
        <replacefilter token="@APPNAME@" value="${app.name}" />
        <replacefilter token="@BUILDVERSION@" value="${build.number}" />
        <replacefilter token="@BUILDDATE@" value="${TODAY_De}" />
    </replace>
    <exec executable="${version.tool}" spawn="false" dir=".">
        <arg line=". cq/apps/src/de/anna/Util/Version.java cq/apps/src/de/anna/Util/Version.java" />
    </exec>
</target>

Что я хочу добавить в файл Version.java, который является автором последнего коммита иидентификатор записи об изменении.(Я думаю / переменные $ Author $ и $ Id $ были переменными)

1 Ответ

3 голосов
/ 26 августа 2011

Забудьте о SubWCRev и подумайте о Subversion. Вот с чем ты работаешь.

В Subversion вам нужно установить свойство с именем svn:keywords и установить это значение для ключевых слов, которые вы хотите использовать. Это объясняется в интерактивном руководстве Subversion в Подстановка ключевых слов .

Используя свойство svn:keywords, вы получаете хранилище Subversion для обработки имен переменных. Например, у вас есть файл с именем information.txt, который выглядит следующим образом:

The last person to check in the file is $Author$ and the last version was $Version$.

Проверка этого файла в Subversion не изменится $Author$ или $Revision$.

Теперь вы устанавливаете свойство svn:keywords в файле information.txt:

$ svn propset svn:keywords "Author Date" information.txt
$ svn commit -m"Setting svn:keywords to set the information in information.txt"

Вы также можете сделать это через TortoiseSVN через контекстное меню TortoiseSVN -> Свойства

Теперь, когда вы смотрите на файл, поля изменились:

$ cat information.txt
The last person to check in the file is $Author:David$ and the last version was $Revision:123$.

Не то, что вы хотите? Еще вы можете просто выполнить svn info и получить нужные свойства в формате XML. Затем вы можете использовать задачу <xmlProperties>, чтобы прочитать их как свойства:

<project>
    <property name="target.dir" value="${basedir}/target"/>

    <mkdir dir="${target.dir}"/>
    <exec executable="svn"
        outputProperty="svn.info">
        <arg line="info --xml"/>
    </exec>
    <echo message="${svn.info}"
        file="${target.dir}/info.txt"/>
    <xmlproperty file="${target.dir}/info.txt"
        keeproot="no"
        prefix="svn"/>
    <echo message="Author = &quot;${svn.entry.commit.author}&quot;"/>
    <echo message="Date = &quot;${svn.entry.commit.date}&quot;"/>
    <echo message="Revision = &quot;${svn.entry(revision)}&quot;"/>
</project>

Я использую задачу <exec>, чтобы получить информацию Subversion и поместить ее в свойство ${svn.info}. Затем я использую задачу <echo>, чтобы вывести ее в файл ${target.dir}/info.txt. После этого я могу прочитать файл с помощью задачи <xmlproperty> и вытащить информацию ниже.

Теперь у меня есть вся информация о ревизии и хранилище Subversion, хранящаяся в различных свойствах.

Если вы знаете коллекции ресурсов, вы можете сделать это без предварительной записи файла в ${target}/info.txt

<project>
    <exec executable="svn"
        outputProperty="svn.info">
        <arg line="info --xml"/>
    </exec>

    <xmlproperty keeproot="no"
        prefix="svn">
        <propertyresource name="svn.info"/>
    </xmlproperty>

    <echo message="Author = &quot;${svn.entry.commit.author}&quot;"/>
    <echo message="Date = &quot;${svn.entry.commit.date}&quot;"/>
    <echo message="Revision = &quot;${svn.entry(revision)}&quot;"/>
</project>

Надеюсь, это то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...