2010-02-21 14 views
6

Por accidente llamé "svn import ..." en el directorio incorrecto. ¿Hay alguna manera sensata de deshacer este error?¿Es posible deshacer una importación en subversión?

Google No encontré ninguna respuesta útil, y la más cercana a mi problema que encontré en stackoverflow fue importing the correct data to the wrong place, mientras que importé los datos incorrectos en el lugar correcto.

Y: el repositorio NO es nuevo, por lo que eliminarlo está fuera de toda duda.

Sería una especie de ironía, si no pudiera deshacer las operaciones en un sistema de control de versiones. Entonces, ¿alguien puede ayudarme? (¡Gracias!)

EDITAR: Tengo mi repositorio almacenado en una base de datos Berkley, es decir, está en el sistema de archivos. Al observar la fecha de modificación de todos los archivos/directorios y el contenido de los archivos recién modificados, pude averiguar qué hacer, excepto por una cosa: ¿alguien sabe para qué sirve el archivo txn-current? Supongo que está conectado a la gestión de transacciones, pero ¿cuál es el significado de su contenido (longitud es de 2 bytes)?

EDIT 2: Gracias por las dos respuestas útiles. Acepté la respuesta de Martin, ya que debería proporcionar la manera correcta de hacerlo (ya que estoy bajo presión de tiempo, simplemente borré algunos archivos como se insinuó en mi primer EDIT, ignorando el contenido de txn-current y vivo bien hasta ahora). ¡Pero mira el enlace que Wim dio en su comentario!

Respuesta

10

Si no hubo otra confirmación ya ha importado sus archivos, a continuación, puede eliminar fácilmente la última revisión usando svn dump.

El siguiente ejemplo está tomado de this page:

(revisiones asumiendo 1-125 están bien, 126 es que la última revisión, la causa del problema)
  • hacer una copia de seguridad del repositorio, y luego volcar el repositorio (con excepción de la última revisión):
    • > svnadmin dump -r1:125 myrepo > my.dump
  • crear ahora un nuevo repositorio y cargar el volcado:
    • > svnadmin create myrepo
    • > svnadmin load myrepo < my.dump
11

No se puede deshacer una confirmación directa, la única opción para esto es hacer un svnadmin dump, retire la confirmación desde el volcado (ya sea a mano usando un editor de texto, o el uso de svndumpfilter y svnadmin load nuevo.

Si no es un problema real que los datos se queda en algún lugar en el repositorio como una revisión anterior, sólo puede svn delete y cometen alguna otra cosa en su lugar.

+0

Gracias, pero había algunos binarios en el directorio equivocado y me gustaría deshacerse de ellos. ¿Cómo podría eliminar los datos usando dump? –

+2

Una versión anterior del libro SVN tiene más información sobre el uso de svndumpfilter: http://svnbook.red-bean.com/en/1.2/svn.reposadmin.maint.html#svn.reposadmin.maint.tk.svndumpfilter – Wim

+0

Enlace muy útil, gracias de nuevo! Estoy en un camino diferente en el momento (ver la próxima edición de mi pregunta), pero si no funciona, probaré svndumpfilter. –

Cuestiones relacionadas