Пара вариантов, которые я вижу
1 - выдать svn-статус --show-updates перед включением svn и выяснить, есть ли какие-либо изменения (должно быть так же просто, как подсчет строк в ответе)- Я думаю, что современная папка будет генерировать только 1 строку)
2 - перейти от задачи svn-update к exec task и перенаправить вывод из svn в тестовый файл, который вы можете опубликовать, чтобы определить,любые обновления были сделаны (аналогично первому варианту).
3 - Захватите svn log после svn с задачей на основе http://jonathanmalek.com/wp/?p=244, а затем обработайте xml, чтобы определить, были ли внесены какие-либо изменения.,Это будет работать только в том случае, если вам гарантировано увеличение числа оборотов только на 1, поскольку он получает только информацию журнала для последней ревизии.Разница в этом заключается в том, чтобы получить журнал до svn up и после, а затем сравнить их.
Лично я бы выбрал вариант 2. Запуск svn up в обновленном рабочем каталоге приводит к одной строке (при ревизии) поэтому перейдите от использования задачи обновления svn к следующему:
<target name="Svn-update">
<!-- Default to true so failure mode is to build / signal build is required -->
<property name="source.changed" value="true"/>
<exec
program="svn.exe"
commandline=’up′
output="_update.log"
failonerror="true"/>
<property name="updates.count" value="0"/>
<foreach item="Line" in="_update.log" property="updates.line" trim="Both">
<property name="updates.count" value="${int::parse(updates.count) + 1}"/>
</foreach>
<if test="${updates.count==1}">
<!-- An up to date working directory generates a single line "At revision xxx" -->
<property name="source.changed" value="false"/>
</if>
</target>
теперь вы можете использовать if = "$ {source.change == 'true'}" и если = = "$ {source.changed== 'true'} ", чтобы определить, когда вы должны и должны выполнить оставшуюся часть вашей сборки и уведомления