¿Cómo get el nombre de usuario de la última confirmación svn usando ant?

Me gustaría usar Ant para get el nombre de usuario de la última confirmación de un repository svn.

¿Cómo puedo hacer esto tan multiplataforma como sea posible?

¡Gracias!

Entonces, aquí hay un ejemplo para "svnant":

 <path id="devlibs.path"> <fileset dir="devlib" includes="**/*.jar" /> </path> <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="devlibs.path" /> <svnSetting id="svn.settings" svnkit="false" javahl="false" username="${svn.username}" password="${svn.password}" /> <target name="get-svn-author"> <svn refid="svn.settings"> <singleinfo target="${svn.repo.url}" property="author.result" request="author" /> </svn> <echo message="Author of last commit: ${author.result}" /> </target> 

Debería poner "svnant.jar" y "svnClientAdapter.jar" en la ruta identificada por "devlibs.path". Y otras bibliotecas requeridas por "javahl" o "svnkit" a su "$ {ANT_HOME} / lib".

Si tiene un repository SVN con formatting 1.6, puede usar "svnkit" (establecido en "verdadero" en "svnSetting" -block). Debido a que "svnkit" es un puro juego de herramientas de Java, es mejor usarlo cuando necesite una solución multiplataforma. Si ya cambió a 1.7, entonces recomiendo usar el cliente de línea de command SVN ("svnSetting" configurado para el cliente de línea de command en mi ejemplo). Consulte esta página (Slik SVN) para get información sobre dónde encontrar y cómo instalar diferentes clientes de línea de command SVN.

En caso de que prefiera una solución que no utilice tareas opcionales, esta es la esencia de cómo puede hacerlo:

 <target name="get-svn-author"> <tempfile property="svninfo.result"/> <exec executable="svn" output="${svninfo.result}"> <arg value="info"/> <arg value="${svn.repo.url}"/> </exec> <tempfile property="svnauthor.result"/> <copy file="${svninfo.result}" tofile="${svnauthor.result}"> <filterchain> <linecontainsregexp> <regexp pattern="Last Changed Author:*"/> </linecontainsregexp> </filterchain> </copy> <concat> <filelist files="${svnauthor.result}"/> </concat> <delete file="${svninfo.result}"/> <delete file="${svnauthor.result}"/> </target> 

Una pega es que usted escribe / borra files que no siempre son posibles (es decir, si no tiene permissions). Otra pega es que debe instalarse un cliente svn (que se puede ejecutar mediante el command svn desde la command-line).

Pensé que había publicado una respuesta. Esta es más o less la respuesta de malenkiy_scot. Sin embargo, uso el indicador --xml en el command svn info . Esto pone el resultado del command svn info en salida xml. Entonces pude usar la tarea <xmlproperty> para leerla.

Mediante el uso de collections de resources, también evité el problema de save la salida en un file que se debe eliminar más adelante.

 <project> <property name="svn.url" value="http://svn.foo.com/src/repos"/> <exec executable="svn" outputproperty="svn.info"> <arg value="info"/> <arg value="--xml"/> <arg value="${svn.url}"/> </exec> <xmlproperty prefix="svn"> <propertyresource name="svn.info"/> </xmlproperty> <echo message="Last committer = ${svn.info.entry.commit.author}"/> </project> 

Traté de ver si podía salir usando la tarea <exec> como un recurso . De esa forma, ni siquiera tendría que save el resultado del command svn info en una propiedad. Pero, por desgracia, no pude encontrar la manera de hacerlo.


La forma más neutral de la plataforma es la respuesta de Vadim Ponomarev. Esta era la forma en que tenía la intención de responder esta pregunta.

Sin embargo, habría incluido el file jar svnkit en el directory devlib y forzado el uso de svnkit . Esto asegura que funciona sin importar qué cliente de Subversion esté instalado. Incluso funcionará incluso si no hay un cliente de Subversion instalado. Simplemente mantenga los flasks necesarios dentro de un directory en el proyecto.

Ya hay una buena solución dentro de un shell ejecutable. Esa solución tiene la ventaja de que puede hacerlo como parte de la fase de compilation utilizando scripts y no en la fase posterior a la construcción. Esto se explica a continuación. Ver http://sofes.miximages.com/a/11837662/5842403

De hecho, puede acceder a la información antes de que finalice la fase de compilation leyendo / parsing el file ../builds/$BUILD_NUMBER/changelog.xml dentro de la carpeta de compilation. Este file se crea con el desencadenamiento de compromiso SVN y no con el final de la fase de compilation o post_build. Eso significa que puede analizarlo al comienzo de la fase de compilation del mismo trabajo con un script e insert los datos en variables env.