Zootropo

Diario del mundo geek.

sábado, junio 26, 2004

Un cliente de Subversion gráfico: TortoiseSVN

TortoiseSVN puede descargarse desde su página web. La instalación no tiene ninguna complicación y una vez se termine la instalación se añadirán una serie de entradas en el menú contextual del explorador de Windows.

Si abrimos el explorador y hacemos click sobre el menú Archivo vemos una entrada de menú checkout y otra TortoiseSVN. Si pulsamos sobre checkout Tortoise comprobará los archivos del repositorio, para lo cual tenemos que pasarle la URL del repositorio (si estamos en nuestro PC, http://127.0.0.1/repos si seguisteis los pasos de la entrada anterior de la bitácora) y el directorio en que guardaremos en local los archivos que bajemos del repositorio. Al darle a aceptar se creará el directorio donde guardar la copia del repositorio si este no existía y se descargarán los archivos del repositorio a este. En nuestro caso dado que no tenemos ningún archivo en el repositorio aún, simplemente creará un directorio vacio. Una vez que hemos hecho esto podremos añadir, borrar o modificar los archivos en local y mandarlos luego al repositorio.

Si os habeis fijado ha aparecido una marca con fondo verde sobre el directorio donde tenemos el repositorio local. Esto significa que el directorio está actualizado respecto del repositorio remoto. En el momento en que editemos algún archivo en local aparecerá una exclamación sobre fondo rojo en el archivo editado y los directorios que lo contienen, para avisarnos de que tenemos que actualizar el repositorio remoto con nuestra copia (commit).

Vamos a añadir nuestro primer archivo al repositorio remoto. Para ello creamos un archivo en el directorio local, por ejemplo un HolaMundo.java

class HolaMundo{

public static void main (String arg[]){
System.out.println("Hola Mundo");
}
}

si hacemos click con el botón derecho sobre el archivo recien creado dentro de la entrada de menú para TortoiseSVN tenemos una opción Add. Hacemos click sobre ella, lo que hace que aparezca una cruz en azul, indicando que se ha añadido el archivo al repositorio pero tenemos que enviarlo usando commit. Si hacemos click con el botón derecho ahora veremos que tenemos una opción commit (actualizar el repositorio remoto con nuestra copia) y otra update (actualizar la copia local con la version del repositorio remoto). Hacemos click sobre commit, con lo que nos pedirá nombre de usuario y contraseña si indicamos a Apache que era necesario para escribir en el repositorio. Una vez introducida la contraseña podemos abrir el repositorio remoto (http://127.0.0.1/repos) y comprobarmos que aparece un nuevo archivo HolaMundo.java y que ha cambiado el número de revisión de 0 a 1.

Ahora si hacemos algún cambio en el archivo HolaMundo local (nunca se debe editar directamente el repositorio remoto porque podría corromperse la información) y añadimos otra línea por ejemplo

class HolaMundo{

public static void main (String arg[]){
System.out.println("Hola Mundo");
System.out.println("Adios");
}
}

vemos que aparece una exclamación en fondo rojo sobre el archivo editado como ya habíamos comentado. Si queremos actualizar la copia remota con la nueva vesión de HolaMundo usamos commit.

También podría ser que quisieramos actualizar la copia de HolaMundo con posibles cambios que hubiera hecho otro programador, para lo cual utilizaríamos update.

Sin embargo hay ocasiones en que el proceso para commit y update no es tan sencillo. Puede ocurrir que otro programador halla editado alguna línea que nosotros también hemos editado, en ese caso hay un conflicto el cual subversion no puede resolver y tiene que ser el propio usuario el que realice los cambios necesarios antes de usar commit. Si intentamos actualizar el repositorio remoto y la copia del repositorio tiene algún conflicto con la nuestra nos mostrará un mensaje de error

‘Commit failed (details follow)
Your file HolaMundo.java is probably out of date.
The version resource does not correspond to the resource within the transaction….’

y aparecerá una señal de alerta sobre el icono del archivo en cuestión. Una vez que terminaramos de editar el archivo usaríamos Resolve, y esta vez si, se actualizaría el repositorio remoto.

Además de crear o editar archivos o directorios también podemos por ejemplo eliminarlos, renombrarlos, moverlos,... para más información podeis leer la Guía de Introducción a TortoiseSVN o su FAQ, ambos en inglés.