Как обнаружить существующий каталог SVN в Nant? - PullRequest
1 голос
/ 19 марта 2009

Я строю цель в Нанте, которая разветвляет наш проект.

Он создает ветку в SVN, проверяет эту ветку, обновляет различные файлы в этой ветке новым предоставленным номером версии, проверяет все это.

В первый раз ветка SVN работает нормально (с помощью команды копирования URL-> URL), но если она запускается 2 раза, она копирует транк в BranchName / trunk, вместо того чтобы сказать, что он уже существует.

Есть ли разумный способ для Нанта обнаружить, что ветвь уже существует, и не пытаться делать копию SVN во второй раз?

Я пытаюсь встроить некоторый интеллект в сценарий, чтобы при его повторном запуске с теми же входными данными ничего плохого не происходило.

Ответы [ 2 ]

1 голос
/ 20 марта 2009

Вот мой последний сценарий:

<target name="branchSvn">
    <exec program="${svn.executable}" 
    commandline='info ${svn.build.root.path}/branches/${branch.name}/ --xml' output='svn_${branch.name}.xml' />
    <xmlpeek file='svn_${branch.name}.xml' xpath='/info' 
    property='branch.info' />
    <echo message='${svn.build.root.path}/branches/${branch.name}/ already exists.' 
    if="${branch.info!=''}" />
    <delete file='svn_${branch.name}.xml' />
    <exec program="${svn.executable}" 
    commandline='copy ${svn.build.root.path}/trunk ${svn.build.root.path}/branches/${branch.name}/ -m "Branched ${branch.name} by nant script."' 
    if="${branch.info==''}" />
</target>

Я использовал функцию -xml и xmlpeek для получения необходимой информации.

1 голос
/ 19 марта 2009

Я не знаю конкретного метода Нанта, но вы можете использовать svn info для проверки:

>svn info http://svn.host.com/repo/no-such-path
http://svn.host.com/repo/no-such-path:  (Not a valid URL)

против

>svn info http://svn.host.com/repo/existing-path
Path: existing-path
URL: http://svn.host.com/repo/existing-path
Repository Root: http://svn.host.com/repo
Repository UUID: ...
Revision: ...
Node Kind: ...
Last Changed Author: ...
Last Changed Rev: ..
Last Changed Date: ...

К сожалению, значение ERRORLEVEL равно 0 в любом случае, но вы можете использовать переключатель --xml, если это поможет. Или посмотрите на некоторые привязки .NET для Subversion.

...