SVN: Revisiones dañadas - Userlinux.net

SVN: Revisiones dañadas: Siguiendo con los problemas de SVN y despues del último hack vimos que varias revisiones anteriores estaban corruptas. Para más inri no eran ni la primera ni la última (fácilmente solucionable) co...

SVN: Revisiones dañadas

Siguiendo con los problemas de SVN y despues del último hack vimos que varias revisiones anteriores estaban corruptas. Para más inri no eran ni la primera ni la última (fácilmente solucionable) con lo que había que aplicarse un poco más.

Con el método "prueba-error" y los dumps pudimos identificar facilmente las revisiones conflictivas para proceder a su borrado. Para borrar una revisión intermedia en SVN hay que armarse de paciencia y ser bastante meticuloso.

La solución -tampoco creo que sea la mejor, pero otra vez más funciona- pasó por ir exportando dumps entre las revisiones correctas e ir dejando fuera las malas. Supongamos que queremos dejar fuera la 101 y la 204. Haríamos lo siguiente:
$ svnadmin dump /home/svn/repo/ -r 0:100 > ~/repo-0-100.dump
$ svnadmin dump /home/svn/repo/ -r 102:203 --incremental > ~/repo-102-203.dump
$ svnadmin dump /home/svn/repo/ -r 205:HEAD --incremental > ~/repo-205-head.dump
Ojo con el --incremental, importante hacerlo despues del primer dump para que luego funcionen de forma correcta los loads.

Una vez tenemos los dumps en ficheros procedemos a crear un nuevo repositorio e importarlos con mucho cariño ;)
$ svnadmin create /home/svn/repo2/
$ svnadmin load /home/svn/repo2/ < ~/repo-0-100.dump
$ svnadmin load /home/svn/repo2/ < ~/repo-102-203.dump
$ svnadmin load /home/svn/repo2/ < ~/repo-205-head.dump
Y si todo ha salido bien ya tendremos nuestro nuevo repositorio totalmente limpio de malas hierbas. Ni svn repair ni nada por el estilo, creando dumps ha sido la única forma de recuperar el histórico de cambios que ya dábamos por perdido.

Espero no llevarme más sorpresas derivadas del fallo del servidor, pero está siendo "divertido".

Deja un comentario

Tu nombre
Tu email
http://
  « Captcha

[ Userlinux 2001 ~ 2009 | Sindicación ]