Limpiar un check de svn (eliminar files que no sean svn)

Me gustaría eliminar todos los files en mi copy de trabajo que no se conocen en el repository svn.

Efectivamente, como si acabara de realizar un pago limpio, pero preferiría no tener que volver a download todos los files.

Lo más cerca creo que he llegado a esto es …

rm -rf `svn st | grep "^?" | cut -d" " -f8` 

Pero esto parece torpe y no confío totalmente en él, ya que la inconsistencia en el resultado podría eliminar los directorys fuera de svn.

"svn export" no es lo que estoy buscando porque no estoy limpiando la fuente para empaquetarlo, solo quiero eliminar principalmente cruft (* .pyc, * .orig, * .rej, svn-commit.tmp, * .swp).

¿Hay una mejor manera de hacer esto además de hacer un pago limpio?

La mayoría de las soluciones que se publican aquí no pueden manejar carpetas con espacios en blanco. Es por eso que usamos este:

 svn status --no-ignore | grep '^[?I]' | sed "s/^[?I] //" | xargs -I{} rm -rf "{}" 

http://www.cuberick.com/2008/11/clean-up-your-subversion-working-copy.html

Esto es lo que hago cuando quiero que mi copy de trabajo sea idéntica al repository:

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

Eso eliminará todos los files que no están sincronizados con el repository. Luego, simplemente actualice para restaurar las cosas que eliminó y actualice.

 svn up 

… ¡Asegúrate de no tener modificaciones o adiciones! Un command más seguro podría ser:

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

… ¿Qué pasa con los files ignorados? P.ej

 svn st --no-ignore svn st --no-ignore | awk '{print $2}' | xargs rm -rf svn st --no-ignore | grep '?' | awk '{print $2}' |xargs rm -f 
 svn status --no-ignore | grep '^[?I]' | awk '{print $2}' | xargs rm -rf 

Dejame explicar.

Obtenga el estado de los files en un repository y los imprime uno por uno a la salida estándar en una matriz

 svn status 

Esto incluye files configurados para ser normalmente ignorados por svn

 --no-ignore 

Coincidir con las líneas que incluyen un? o un I como estado. Me refiero a un file ignorado y? significa un file que no está bajo control svn.

 | grep '^[?I]' 

Esto imprime la segunda variable en la matriz que es el nombre de file

 | awk '{print $2}' 

Esto elimina los files con los nombres de files impresos

 | xargs rm -rf 

Cheers, Loop

Utilizar esta:

 svn status --no-ignore | grep ^I | awk '{print $2}' | xargs rm -rf 

Obtenido de commandlinefu .

¿Eliminar todos los files que no tienen el atributo de solo lectura? Asegúrate de que no tienes las cosas desprotegidas antes …