Utilice ant para eliminar todos los files en una carpeta de copy de trabajo svn en mac os x

Estoy intentando escribir un script ant que construye nuestro proyecto y saveá la nueva compilation en una carpeta dist que se compromete con svn. Como el nombre del file cambia para cada compilation, necesito eliminar todos los files antiguos en la carpeta dist (sin conocer los nombres).

Para esto estaba usando el siguiente código:

<exec executable="svn" outputproperty="__ignoreSvnDeleteDist"> <arg value="delete"/> <arg value="../dist/*"/> </exec> 

Esto funciona bien siempre y cuando lo use en una máquina con Windows, pero tan pronto como lo pruebo en Mac Os X me aparece el siguiente error:

 [echo] SVN Delete res: svn: '../dist/*' does not exist 

He comparado que utilizo la misma versión de ant en ambas máquinas (1.7.1) y la misma versión de Java (1.6.0_12 para la caja de Windows y 1.6.0_15 para la Mac).

Ok después de search, encontré la respuesta. Creo que tendrá que tener en count que el command exec no está creando un shell en el que ejecuta su command, sino que ejecutará el command directamente?

Y el * es evaluado por el shell bajo unix como sistemas. Enfrente de Windows, el comodín de la plataforma se evalúa sin el intérprete de command-line ( http://wiki.apache.org/ant/AntOddities ).

Este script debería funcionar:

 <exec executable="sh" outputproperty="__ignoreSvnDeleteDist"> <arg value="-c"/> <arg value="svn delete ../dist/*"/> </exec> 

Aquí creamos un shell y le damos el command para que se ejecute. Lamentablemente, esto ahora solo funcionará en sistemas como Unix.

En lugar de ejecutar los commands "svn" usted mismo, podría considerar la excelente tarea SvnAnt del proyecto Subclipse http://subclipse.tigris.org/svnant.html . Hace que sea mucho más fácil manejar tareas relacionadas con svn. El código de tu problema podría verse como

 <svn> <delete> <fileset dir="../dist"> <include name="**/*"/> </fileset> </delete> <commit message="commit deleted files" dir="../dist"/> </svn> 

Hay una solución simple: no comprometer las comstackciones a SVN.

Si su process de compilation es demasiado frágil para poder recrear cualquier distribución desde las fonts, entonces debe arreglar su process de compilation. Considere configurar un server de CI como Hudson .