Estoy escribiendo una secuencia de comandos de actualización, que extrae la última versión de varios repositorios y reconstruye los proyectos. Yo quería hacer que la construcción condicional, así que tratéMercurial: compruebe si la última extracción/actualización introdujo cambios
hg pull -u && ant clean build
y la variación
hg pull; hg update && ant clean build
Sin embargo, la acumulación de hormigas siempre se invoca, incluso cuando nada ha cambiado. Sé que puedo usar hg incoming
para verificar los cambios antes de hacer la extracción, pero esto me parece un desperdicio.
¿Cómo puedo verificar si hay nuevos cambios, sin tener que contactar al servidor dos veces (una vez para hg incoming
, una vez para hg pull
)?
ACTUALIZACIÓN: Este es mi Creación de un script ahora:
update() {
TIP=$(hg tip --template "{node"})
hg pull -u
if test "$TIP" != $(hg tip --template "{node}"); then
ant clean build
fi
}
(cd repo1; update)
(cd repo2; update)
Y para gente que se pregunta por qué hago una generación limpia cada vez, hay dos razones para ello:
- los repositorios dependen el uno del otro, y cuando la API en uno de ellos cambia, necesito hacer una reconstrucción completa para encontrar lugares donde estos cambios API rompan el código
- El compilador de Java en línea constantes, también de otros archivos de clase. Ahora, cuando cambio una constante en una clase a un campo que puede cambiar, todos los demás archivos de clase que usan esa constante permanecen intactos por una compilación, y esto puede conducir a errores sutiles que quiero evitar.
En caso de no tener un sistema de compilación adecuado, léase: no es así, ¿podría hacer compilaciones incrementales? – jmg
hormiga puede hacer compilaciones incrementales, pero quiero evitar errores sutiles, por lo que hago una compilación limpia todo el tiempo. –
, entonces, ¿cómo puede aumentar sus propias compilaciones incrementales para evitar errores sutiles? –