Как извлечь версию и путь из рабочей копии SVN в переменную nant? - PullRequest
3 голосов
/ 10 октября 2008

Я создаю новый процесс сборки для проекта DotNet, который должен храниться в Subversion.

Для каждой dll / exe, которую я компилирую (через Nant), я хотел бы включить 2 дополнительных атрибута в dll, которые были построены.

Я уже понимаю работу задачи «асминфо». Но мне нужна помощь в получении информации, которую я надеюсь вставить в мои двоичные файлы.

Сборка всегда будет происходить из полной рабочей копии (проверяется самим процессом сборки) и, следовательно, всегда будет иметь доступный каталог .svn.

Я хочу добавить следующие атрибуты: RepositoryVersion и RepositoryPath. (Я понимаю, что это не имена, по которым эта информация передается в SVN)

Для этого мне нужно будет извлечь RepositoryVersion и RepositoryPath, представленные папкой рабочей копии, в которой находится BuildFile.

Как извлечь эту информацию из любой заданной папки .svn в 2 переменные nant?

Ответы [ 4 ]

3 голосов
/ 10 октября 2008

Во-первых, вы можете использовать «svn info --xml> out.xml» для получения информации svn в текстовый файл. Затем вы можете использовать Nant xml-peek, чтобы получить значение из файла в переменную.

<xmlpeek file="out.xml" xpath="/info/entry/url" property="svn.url" />
2 голосов
/ 20 октября 2008

Вот как я делаю это для номера ревизии:

<exec
    program="svn"
    commandline='log "${solution.dir}" --xml --limit 1'
    output="${solution.dir}\_revision.xml"
    failonerror="false"/>
<xmlpeek
    file="${solution.dir}\_revision.xml"
    xpath="/log/logentry/@revision"
    property="version.revision"
    failonerror="false"/>
<delete file="${solution.dir}\_revision.xml" failonerror="false"/>
0 голосов
/ 10 октября 2008

Я бы порекомендовал вам встраивать ключевые слова SVN в свой файл сборки в качестве свойств. Например:
<property name="RepositoryPath" value="$HeadURL$" />
<property name="RepositoryVersion" value="$Revision$" />

0 голосов
/ 10 октября 2008

Записи в каталоге .svn на самом деле не предназначены для прямого доступа. Я не знаю много о том, что вы делаете, но я бы посоветовал вам использовать механизм, который вы используете для проверки проекта, чтобы найти версию и путь HEAD. (Я бы предположил, что, поскольку вы проверяете проект, вы уже знаете путь, но, возможно, это не так).

Извините, я не могу дать больше информации, чем эта.

...