La respuesta aceptada no funcionará si su proyecto contiene referencias svn:externals
. En ese caso, svn status -q
todavía producirá salida incluso si la copia de trabajo no tiene modificaciones locales. Por ejemplo, mi proyecto depende de varias bibliotecas que están cada mantenidos en una parte separada del repositorio:
$ svn status -q
X Externals/ETCKit
X Externals/RulesParser
X Externals/XMLRPC
Performing status on external item at 'Externals/ETCKit':
Performing status on external item at 'Externals/XMLRPC':
Performing status on external item at 'Externals/RulesParser':
Para tener en cuenta esta salida adicional, que terminé usando awk
:
if [[ -n $(svn status -q . | awk '$1 ~ /[!?ABCDGKLMORST]/') ]]; then
echo "The working copy at $(pwd) appears to have local modifications"
fi
Este script toma la salida de svn status -q
y filtra las líneas que no comienzan con un código de estado que indique un cambio local. Si el resultado final es la cadena vacía, entonces la copia de trabajo está limpia.
Sí, tomé esta idea y terminé con algo muy similar: [código] if [-z "$ (svn st)"]; luego echo "la copia de trabajo es prístina" else echo "la copia de trabajo tiene cambios" exit; fi [/ code] – fishtoprecords
@fishtoprecords, por favor envíela como respuesta. Está bien enviar una respuesta a tu propia pregunta. – Nowaker
Tenga en cuenta: no creo que esto funcione si tiene elementos externos. Puedes agregar '-ignore-externals' para que funcione, pero luego, por supuesto, no verificará los elementos externos (si te importa eso). – histumness