2012-05-02 10 views
35

¿Cómo puedo eliminar todos los archivos sin seguimiento de un pago de SVN con la herramienta de línea de comandos svn? Git y Hg ofrecen los comandos clean y purge para este propósito, pero no puedo encontrar el comando correspondiente en SVN.Cómo eliminar archivos sin seguimiento en SVN

No me importa si tengo que revertir todas mis modificaciones locales en el proceso (en cuyo caso, esencialmente desearía restaurar mi proceso de pago a un estado prístino) o si las modificaciones locales en los archivos rastreados pueden permanecer intactas; cualquier situación es aceptable.

+0

duplicado posible de [¿Cómo puedo eliminar todos los archivos/ignorados/carpetas sin versionar en mi copia de trabajo?] (Https : //stackoverflow.com/questions/2803823/how-can-i-delete-all-unversioned-ignored-files-folders-in-my-working-copy) – Ruslan

+0

@Ruslan: aunque mi pregunta no es sobre TortoiseSVN Sí, ese es esencialmente el mismo punto. –

Respuesta

52

Puede haber una forma incorporada, pero si es así, no lo sé. Sin embargo, algo como lo siguiente debe hacer el trabajo: (. Todos los archivos sin versión deben aparecer en una línea que comienza con ? en un svn st)

svn st | grep '^?' | awk '{print $2}' | xargs rm -rf 

EDITAR (@GearoidMurphy) Es un reto de conseguir este fragmento funciona en un entorno cygwin, ya que xargs trata las ventanas como barras de escape y tiene problemas para analizar las terminaciones de línea '\ r \ n', a continuación se muestra mi solución adaptada de esta respuesta perfectamente válida:

svn st | grep '^?' | gawk '{printf(\"%s|\", $2)}' | xargs -d "|" -n1 C:\cygwin\bin\rm -r 
+0

Sí, supongo que puede que tenga que ver, aunque es formidablemente feo, y requiere varias herramientas adicionales que no sean SVN. –

+2

Esto no tiene en cuenta los archivos ignorados, por lo que es posible que también necesite el indicador '--no-ignore' para' svn st' –

+1

También creo que esto puede fallar para nombres de archivos que contengan espacios –

20

La secuencia de comandos svn-clean hace precisamente esto, aunque depende de tener instalado Perl. Dejará intactas las modificaciones locales pero eliminará los archivos ignorados. Ejecutar con '-p' para obtener una vista previa de los archivos que se eliminarán.

3

Este comando debe hacer el trabajo, espacios y todos (tratado en OSX solamente):

svn status | grep '^\?' | sed 's/? *//' | xargs -I% rm -fr % 
Cuestiones relacionadas