2009-03-19 5 views
1

Я строю цель в nant, которая разделяет наш проект.Как определить существующий каталог SVN в Nant?

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

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

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

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

ответ

1

Вот мой окончательный сценарий:

<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

Я не знаю, из-Нан конкретного метода, но вы можете использовать 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.

+0

Спасибо, это дает мне преимущество ... +1 –