Obtener NAnt para verificar los files modificados en SVN

A fin de tratar de acelerar mi process de compilation continuo NAnt / CruiseControl.Net / Ivy, esperaba get NAnt para verificar si mi código base ha cambiado en mi PC local después de realizar una actualización basada en NAnt, y luego si el código ha cambiado, luego inicie el process para rebuild ese proyecto y posiblemente levante una bandera para build todos los componentes subsiguientes, independientemente de su estado de cambio.

Por lo que respecta a la razón, mi process de creación actualmente toma más de 12 minutos para completar un montón de trabajo, y estoy pensando que puedo networkingucir este time al no crear código que no vaya a cambiar, así como mantener a los desarrolladores en la oficina más feliz también.

Hemos investigado la eliminación de algunos de los proyectos del pedido de compilation, pero todos son necesarios en caso de cualquier cambio en el order del tree de compilation.

Un par de opciones que puedo ver

1 – emitir un estado svn –show-updates antes del svn up y averiguar si hay algún cambio (debe ser tan simple como contar las líneas en la respuesta – Creo que una carpeta actualizada generaría solo 1 línea)

2 – cambie de la tarea svn-update a la tarea ejecutiva y networkingirija la salida de svn hacia arriba en un file de testing que puede publicar el process para determinar si se realizaron actualizaciones (similar a la primera opción).

3 – Tome el logging de svn después de la actualización con una tarea basada en http://jonathanmalek.com/wp/?p=244 y luego procese el xml para determinar si se realizaron cambios. Esto solo funcionaría si tuviera garantizado un aumento de solo 1 número rev, ya que solo obtiene información de logging para la última revisión. La variación en esto sería tomar el logging antes del svn arriba y después y luego compararlos.

Personalmente, me gustaría ir con la opción 2. Ejecutar svn up en un directory de trabajo actualizado da como resultado una línea (En revisión), por lo tanto, cambie de usar la tarea svn update a lo siguiente:

<target name="Svn-update"> <!-- Default to true so failure mode is to build / signal build is requinetworking --> <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> 

ahora puede usar if = "$ {source.change == 'true'}" y unless = "$ {source.changed == 'true'}" para determinar cuándo debe y debe ejecutar el rest de su compilation y notifications