2008-11-20 6 views
9

Estoy armando un sistema de compilación y quería saber si hay una manera confiable de averiguar si una carpeta SVN desprotegida necesita actualizarse (es decir, si está desincronizada con el repositorio). Quiero evitar una construcción nocturna a menos que algo haya cambiado. Podría escribir una secuencia de comandos que analiza los resultados del comando svn update, supongo, pero me pregunté si había un comando que me dijera si realmente se requiere una actualización.Buscar una actualización de subversión

Respuesta

15

Uso del show updates option del comando de estado:

svn status -u 

o

svn status --show-updates 
+3

sugeriría -q para omitir archivos basura –

2

El answer of flolo no funciona bien para los externos subversión (que también se discute en Don't show svn:externals in svn status). Una mejor solución si sólo se necesita la información de que la carpeta actual necesita una actualización (no exactamente qué archivos en sí), this solution es mejor:

cd somedir; 
svn info -r HEAD | grep -i "Last Changed Rev" 
Last Changed Rev: 8544 
svn info | grep -i "Last Changed Rev" 
Last Changed Rev: 8531 

Si estos números no son los mismos, es necesaria una actualización.

+0

"La respuesta de Rob no funciona bien para subversion externos." Esto parece no ser cierto más (probado con SVN 1.8.8). Sin embargo, _su_ solución no funciona para los externos (a menos que se ejecute en cada externo). – Melebius

+0

@Melebius: ya no tengo un repositorio SVN aquí, es decir, no puedo probar lo que quieres decir. ¿Quiere decir que si los svn externos están incluidos en 'somedir' y tienen cambios, que mi solución no muestra números diferentes que lleven al supuesto de que no se necesita ninguna actualización? Si ese es el caso y SVN 1.8.8 no imprime información innecesaria para los externos, también usaría esa solución original otra vez (no probados). – jan

+0

Sí, su solución no muestra números diferentes para la raíz de copia de trabajo. El número de revisión solo tiene sentido dentro de un solo repositorio y una sola llamada 'svn info' no puede mezclar los _Last Changed Rev_'s para diferentes repositorios que pueden ser ingresados ​​por externos. – Melebius

Cuestiones relacionadas