2009-09-12 11 views
5

Tengo un pequeño proyecto privado de código de Google. Para un SCM utilizo Mercurial. Y para la construcción local me gustaría usar nant.Cómo usar mercurial desde nant

Así que, básicamente:

  1. me gustaría descargar mis archivos de origen de un repositorio mercurial conocida mediante una tarea de Nant
  2. me gustaría obtener alguna manera el número de revisión del repositorio para que pueda montar un pequeño y agradable número de versión de ensamblaje

El script de compilación no se utilizará para la integración continua, sino solo para compilaciones nocturnas y compilaciones de producción.

Gracias por la ayuda

Respuesta

4

No sé Nant, pero en la hormiga (real), que sólo tiene que utilizar la tarea <exec> para invocar el binario Hg. Dependiendo de la limpieza que desee comenzar, puede clone o simplemente pull y ejecutar hg id -i le proporciona el número de revisión limpiamente. Otra cosa a considerar es usar los enlaces de archivo en la interfaz web remota (esencialmente el comando hg archive vía HTTP) y simplemente usar wget (no la tarea nant equivalente) para desplegar el archivo tip, que tiene un enlace fácil y consistente, y luego puede obtener el ID de revisión desde el archivo hg_archival.txt del archivo.

+0

Eso funcionaría, pero al mismo tiempo implicaría que el usuario final del script debería tener mercurial instalado localmente. Honestamente esperaba que algunas extensiones de taks estuvieran disponibles – Dejan

+0

No creo que encuentres ningún código no mercurial que diga el protocolo de alambre mercurial actualmente, y está en python. Así que podrías intentar ejecutarlo en IronPython, pero en ese momento estás hablando de tanto trabajo como una instalación mercurial. Volveré a escribir mi solucin basada en get en una respuesta separada. –

2

Puesto que usted está buscando un código NANT en lugar de llamar fuera al binario mercurial, sugeriría simplemente utilizando la tarea de Nant <get> para tirar hacia abajo la punta de la cesión temporal de esta manera:

<get src="http://bitbucket.org/tortoisehg/stable/get/tip.zip" dest="latest.zip" /> 
<unzip zipfile="latest.zip" todir="latest"/> 

y en el interior debe haber un archivo que contiene .hg_archival.txt algo como esto:

repo: bac32db38e52fd49acb62b94730a55f4f4b0cdee 
node: 61482ea34fd0b9650e738eaebb2fe352c2f6315a 

a partir del cual se puede obtener una Hashid adecuado para su uso en la marca una generación.

Desafortunadamente, no encuentro los enlaces de descarga de archivos en el código de google, pero son bastante estándar en las interfaces web mercurial (y bitbucket), así que me imagino que están en algún lado.

0

Si bien esto no hubiera sido aplicable a la persona que originalmente hacía la pregunta, tenía que hacer algo similar ... pero necesitaba la revisión numérica (sí, sé que el número es específico del repositorio, pero en el contexto donde el script se estaba utilizando esto estaba bien). Tampoco tuve problemas para llamar a hg.exe, porque en todos los sitios donde pueda ejecutarse desde hg.exe está disponible.

El guión de NAnt finalmente terminé con esta era:

<exec program="hg.exe" output="CurrentMercurialRevision.txt"> 
    <arg value="id" /> 
    <arg value="-n" /> 
</exec> 
<loadfile file="CurrentMercurialRevision.txt" property="buildNumber" /> 

Por desgracia, no parece ser una forma de NUnit para leer directamente en una propiedad, así que tuve que utilizar el texto intermedio archivar y procesarlo en una propiedad mediante el uso de archivo de carga. También tuve que agregar "CurrentMercurialRevision.txt" al archivo .hgignore ... pero si estás familiarizado con Mercurial probablemente ya lo habías adivinado. ;-)

Esperemos que esto ayude a alguien.

+1

Encontré este hilo cuando busqué una de mis preguntas. Hay una genial comunidad de msks escritas especialmente para "Mercurial" [aquí] (http://msbuildhg.codeplex.com/). Al usar esto, no tiene que usar ningún archivo intermedio para esta tarea. –

Cuestiones relacionadas