Забудьте о 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 = "${svn.entry.commit.author}""/>
<echo message="Date = "${svn.entry.commit.date}""/>
<echo message="Revision = "${svn.entry(revision)}""/>
</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 = "${svn.entry.commit.author}""/>
<echo message="Date = "${svn.entry.commit.date}""/>
<echo message="Revision = "${svn.entry(revision)}""/>
</project>
Надеюсь, это то, что вы ищете.