2010-05-21 13 views
6

Tengo una serie de archivos que deseo agregar a subversión. En lugar de tomar mi tiempo y añadiendo a cada individuo una, decidí ser un smart-culo y hacer un:Subversion 'unadd'?

svn add * 

.. que era un error. ¿Hay alguna manera de poder 'desatar' todo? Hay alrededor de 7 archivos que quería agregar ... ¡ahora está resaltado un extra de más de 500 archivos generados automáticamente que no quise agregar!

No me he comprometido todavía así que espero que haya una manera de deshacer esto !!

Respuesta

12

¿Tiene alguna cambios distintos de los archivos añadidos? (svn status le dirá - los archivos modificados se mostrarán como M, archivos agregados como A - y svn diff le mostrarán los detalles de cualquier cambio). Si no es así, entonces usted puede hacer:

svn revert * 

Pero si haces tener cambios que no sean añade, que las eliminen!

(Probablemente vale la pena experimentar en unos pocos archivos en primer lugar :-)

+0

Creo que quieres decir svn status, no svn diff. – Aif

+0

@Aif: Quise mencionar ambos, pero de alguna manera logré fusionar las explicaciones en una sola. ¡Gracias por mencionarlo! – psmears

0

Puede usar
svn revert -depth = infinito.

Esto también deshará todos los cambios locales a sus archivos, así que úselo con cuidado.

0

Puede utilizar siguiente orden:

svn revert 
8
svn st |grep ^A |cut -c 9- |xargs svn revert 

Para comprobar primero qué archivos se revertirán sin modificar nada excluye la última orden:

svn st |grep ^A |cut -c 9- 

comandos de tubería es potente:

  • svn st lo stat todo
  • grep ^A dará solo líneas que comienzan con la letra A para agregar.
  • cut -c 9- obtendrá el nombre de archivo de esas líneas.
  • xargs svn revert ejecutará svn revert para cada nombre de archivo.

Si está en Windows, tendrá que descargar el paquete UnxUtils o similar, pero vale la pena ya que trae muchos comandos de shell potentes.

+0

-1 para la solución 'install Unix' – jwg

1

Mientras que sólo han añadido nuevas cosas, simplemente

svn revert * 

Para estar seguro, hacer una copia local de los archivos en primer lugar.

8

Puede utilizar

svn rm --keep-local * 

Todos los archivos se mantendrán tal cual, sin reversión.Y unadd para el paso de confirmación.

+0

¿No comprometerse después de hacer esto significa que el archivo se elimina del repositorio remoto? – jwg

+0

Esto borró todos mis archivos al ejecutar este comando (no confirmado) –