Showing posts with label Subversion. Show all posts
Showing posts with label Subversion. Show all posts

Wednesday, March 25, 2009

Revertir los cambios con 'merge' en Subversion

A todos nos ha pasado que por "accidente" subimos un archivo al repositorio cuando no tenia porque subirse. Esto podria provocar un caos si este archivo contiene cierta configuracion de como corre el proyecto (puertos, rutas, etc.).

Una forma de regresar los cambios es obtener el archivo de la revision inmediata anterior y cambiar el contenido del archivo de la revision actual por el contenido del archivo de la revision inmediata anterior. Pero obviamente eso no es la mejor forma.

La mejor forma es usar el comando "merge" de subversion. Lo primero que tenemos es obtener el numero de revision actual del archivo y el numero de revision inmediato anterior (OJO: no necesariamente van a ser consecutivos).

Para estos numeros de revision usamso el comando "log":

$> svn log ruta-al-archivo

el cual nos va a imprimir un listado del log del archivo donde imprime los numeros de revision tambien.

De este listado que sale copiamos el primer numero de revision (el numero de revision actual) y el segundo (el numero de revision inmediato anterior).

Una vez que tenemos estos numeros de revision usamos el comando "merge" de la siguiente forma:

$> svn merge -r Revision-Actual:Revision-Anterior ruta-al-archivo

con esto el subversion imprimira un mensaje como:

--- Reverse-merging rRevision-Actual through rRevision-Anterior into 'ruta-al-archivo':
U ruta-al-archivo


Ya con esto el archivo aparecera como modificado en nuestra copia de trabajo, para verificarlo podermos ver su estatus con:

$> svn st ruta-al-archivo


Entonces nuestro archivo ya estará con el contenido de la versión antes de que lo subiéramos por accidente.

Ya solo nos faltaria darle "commit" para subirlo al repositorio y evitar causarle problemas al equipo de trabajo al usar la versión que se subió por "accidente".

Hay que notar que perderíamos el contenido del archivo que subimos por accidente, así pues, habría que respaldarlo antes de hacer todo este show por si todavía nos interesa usar ese archivo de manera "local".

Thursday, March 5, 2009

Comandos de subversion utiles para ver los logs

Para aquellos que trabajamos con subversion muchas veces tenemos la necesidad de ver el historial de logs de nuestra copia del repositorio (o del repositorio remoto).

Para ver el log ya sea de una cierta ruta o de un archivo se usa el comando:


$> svn log ruta


Incluso, se pueden ver los logs del repositorio remoto con el comando:


$> svn log http://ruta/al/repositorio


Si usamos el comando con la opcion -v (verbose):


$> svn log path -v


en el log se incluyen los archivos involucrados con el cambio.

Si deseamos saber el log y los archivos involucrados en una cierta revision usamos el comando:


$> svn log archivo -v -r numero-de-revision


o si lo que queremos es ver el log de cambios en un rango de revisiones:


$> svn log path -v -r numero-revision-inicial:numero-revision-final


Ahora, cuando trabajamos con subversion y acostumbramos crear ramas (branches) del codigo para realizar los cambios sobre estas ramas para despues integrarlos a la ruta principal del repositorio de codigo (trunk) a veces requerimos de ver los logs desde el momento mismo en que la rama fue creada, esto se logra usando la opcion stop-con-copy en el comando para ver los logs de la siguiente forma:


$> svn log path -v --stop-on-copy