Hands on: SVN

En este artículo vamos a ver como utilizar el control de versiones SVN para mejorar el proceso de desarrollo de aplicaciones.

Clientes de SVN

Dependiendo del entorno que usemos o las preferencias personales que tengamos, podemos usar un cliente con una interfaz visual o trabajar directamente desde la consola ejecutando los comandos. En lo que respecta al primer caso, en Windows existe un cliente muy popular, el Tortoise SVN, que debido a la impracticidad de la consola del sistema operativo de nuestro amigo Bill, se convirtió en la mejor opción para trabajar con SVN en Windows. Para el resto, recomiendo la consola y es en ella que nos vamos a centrar en este post.

Comenzando a trabajar con un nuevo repositorio local

Aclaración: La creación de un repositorio en el servidor no está cubierta por este artículo, el enfoque es exclusivamente desde el cliente.

Bien, ya decidimos usar SVN, ¡bien por nosotros! Para comenzar a trabajar con un repositorio, lo primero que debemos hacer es un checkout para hacer la descarga inicial de contenidos. Si no hay contenidos, no importa, esto nos permitirá dejar configurado el repositorio en la carpeta desde donde lo vamos a desarrollar. Si no es un repositorio público, le vamos a tener que especificar el usuario y la contraseña para validarnos. Lo que nos quedaría algo como lo siguiente:

user@server:/path/to/our/local/repository$ svn checkout https://svn.myrepo.com/svn/trunk/ . –username myUser –password myPassword

Bien, ya tenemos el repositorio listo para ser editado, extendido y publicado.

Utilización diaria de SVN

Día normal en la oficina, llegamos y lo primero que hacemos para seguir desarrollando el proyecto del repositorio (perdón, lo segundo, lo primero debería ser una taza de café) es hacer un Update para descargar las actualizaciones que se hayan publicado (pensando en proyectos que involucren varios desarrolladores).

user@server:/path/to/our/local/repository$ svn update

Ahora si estamos listos para seguir con el proyecto. Si necesitamos hacer alguna gestión con los archivos del repositorio, es imprescindible hacerlo a través de los comandos de svn, ya sea agregar, eliminar, mover o renombrar archivos o directorios. De otra forma, los archivos y directorios físicos se verán afectados pero no la base de seguimiento que tiene el SVN y nos volveremos locos tratando de resolver esos conflictos.

Una vez que estamos satisfechos con el trabajo realizado y queremos publicarlo, debemos hacer un commit acompañado de un comentario sobre lo que trató la modificación. Una buena práctica es no dejar este comentario vacío y completarlo con al menos un texto descriptivo sobre lo que acabamos de hacer.

user@server:/path/to/our/local/repository$ svn commit -m ‘Solucionado bug al tratar de agregar una tarea’

Glosario de comandos

Add: Agrega un archivo al repositorio.

Checkout: Comando que permite hacer la descarga inicial de un repositorio.

Cleanup: Limpia el repositorio de archivos que puedan haber sido borrados del repositorio pero todavía existir físicamente, archivos que permanezcan lockeados, etc.

Commit: Permite publicar los cambios locales en el repositorio para que esté a disposición de todos los clientes cuando hagan un Update.

Copy: Copia un archivo existente en el repositorio.

Delete: Elimina un archivo del repositorio.

Info: Devuelve la información del repositorio con el que estamos trabajando.

Mkdir: Crea un nuevo directorio en el repositorio.

Move: Mueve o renombra un archivo del repositorio.

Status: Devuelve el estado actual del repositorio.

Update: Permite actualizar el repositorio local con los cambios subidos al día de la fecha (o también se puede especificar número de la revisión específica que se quiere).

Resolved: Remueve el estado de «Conflict» del repositorio local, si es que realmente se han resuelto los conflictos que se detectaron. Recordemos que no podemos hacer un Commit si tenemos conflictos en nuestra versión local.

Espero que este post sirva como empujón final para los que estaban indecisos sobre si usar estas tecnologías o como referencia para aquellos que están comenzando a usarlo.

Hay acciones más avanzadas para ignorar archivos (carpetas de cache, archivos temporales, archivos de configuración, etc), manejo de hooks, importación inicial de contenidos, branches, resolución avanzada de conflictos, entre otras cosas, que serán cubiertos en un posterior artículo para usuarios más avanzados.

Próximamente haremos un Hands On de GIT para los que prefieran utilizar ese sistema de control de versiones.

Saludos!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *