- Event Handlers en WinForms ... 30/07/2010
- ¡La historia clínica es mia! En el día de hoy se anunció una nueva disposición legal en la Argentina por la cual se reconoce... 23/10/2009
- La eterna discusión de quién tiene más botones Un poco más sobre la clásica disputa Mac vs.... 20/10/2009
- Use Cases vs. User Stories Opinión personal sobre el empleo de Use Cases y User Stories para definir requisitos... 20/10/2009
- Lanzamiento de Google Maps en Argentina A partir de hoy Google lanzó el Centro de Comercios Locales en Google Maps Argentina. Este... 02/10/2009
- Reloj mundial Increible reloj que da la hora en cualquier punto del planeta al mismo... 29/08/2009
- Error Saving changes is not permitted en SQL Server 2008 Solución al error que impide guardar cambios que requieren re-crear las tablas en SQL Server... 29/08/2009
- Uso de Branches y Tags con SVN El uso de branches y tags en SVN nos permite una mejor organización del trabajo en equipo. Si bien... 28/08/2009
- Cómo determinar la paridad de claves para encriptación con DES Un tema que resulta confuso es determinar si una clave DES es odd parity o even parity. El... 28/08/2009
- Power Tip para Builds Lentos en aplicaciones Mobile Si estás desarrollando una aplicación Mobile con Visual Studio, por alguna extraña razón que... 28/08/2009
Cómo trabajar con Subversion
Primeros pasos para trabajar con SVN como controlador de versiones en proyectos de software.
Marcelo Ruiz, 28/08/2009
Las herramientas de control de versiones son de suma utilidad no solo para desarrolladores, sino también para diseñadores, editores, periodistas y casi todo aquel que trabaje con algún programa informático. Gracias al control de versiones es posible trabajar en equipos de trabajo de cualquier tamaño, sin riesgos de sobreescribir accidentalmente el trabajo de miembros del equipo.
Este artículo se centra tan solo en una herramienta de control de versiones: Subversion (o SVN). SVN es una sistema que funciona con un servidor y una aplicación cliente. Hay muchos clientes para SVN, pero el más popular es, sin dudas, Tortoise SVN. Tortoise SVN se instala como una extensión del explorador de Windows; se agregarán los comandos para trabajar con Subversion en el menú contextual.
Cómo funciona SVN
En un entorno de desarrollo típico basado en SVN, los miembros del equipo agregan, editan y eliminan los archivos en una working copy (copia de trabajo) local y luego suben esos cambios a un repositorio, en una operación conocida como commit. Subversion lleva un registro de todas las versiones de archivos del repositorio subidas por cada uno de los usuarios y permita volver a obtner cualquier versión anterior de los archivos.
Si dos usuarios están trabajando al mismo tiempo en los mismos archivos, los cambios que cada uno realice se combinarán al subirse al servidor. Del mismo modo, si bajamos una actualización (update) donde fue modificado un archivo que estabamos cambiando, Subversion combinará los archivos. Solo en ocasiones especiales pueden surgir comflictos, es decir, cambios que no son posibles combinar; en ese caso Subversion nos permitirá ver las diferencias y elegir cómo queremos resolverlas.
Cómo trabajar con SVN
Para trabajar con Subversion recomendamos tener instalado Tortoise SVN y VisualSVN, en el caso que queramos integrar el control de versiones con Visual Studio. Las instrucciones que siguen a continuación son teniendo en cuenta que ya tienen Tortoise SVN instalado.
Check out
La primera tarea que como programador se debe hacer es bajar una copia de trabajo en una nueva carpeta vacía; esta operación se conoce como check out. Para esto necesitaremos tener la dirección del repositorio y las credenciales para autenticarse al mismo. Al hacer el check out, nos habremos bajado una copia de la última versión del proyecto y podremos comenzar a trabajar en él. Si ya veníamos trabajando en forma local sin un repositorio, deberemos copiar los archivos desde la vieja ubicación, a la nueva carpeta que creamos como copia de trabajo.
Para realizar el check out comenzamos creando una nueva carpeta vacía, hacemos clic derecho sobre ella y aparecerá el menú contextual con la opción Check Out que instaló Tortoise SVN.
Una vez realizado el check out, ya no será necesario volver a ejecutar esta operación.
Actualizar nuestra copia de trabajo (Update)
Para actualizar nuestra copia de trabajo no debemos volver a utilizar check out. De hecho, no volveremos a er esta opción en el menú contextual de Tortoise SVN una vez que nuestra carpeta se haya convertido en una copia de trabajo. En su lugar debemos utilizar la opción Update. Al ejecutar este comando, Tortoise SVN se conectará con el servidor y bajará las últimas actualizaciones (si es que hay) y las unirá con nuestra copia local. Es recomendable hacer un Update al menos una vez por día, al iniciar nuestra sesión de trabajo.
Realizar cambios
La modificación de archivos se lleva a cabo sin ningún cuidado especial. Directamente nos concentramos en escribir código. Los únicos cuidados fuera de lo común que debemos tener son:
- Si creamos un nuevo archivo, debemos agregarlo al control de versiones. Para esto, hacemos clic derecho sobre el mismo y elegimos la opción Add.
- Si queremos eliminar un archivo, debemos eliminarlo con la opción Delete del menú contextual de Tortoise SVN.
- Si queremos renombrar un archivo, debemos utilizar la opción Rename del menú contextual de Tortoise SVN.
- Para mover o copiar un archivo, no existe un comando en Tortoise SVN.
- Podemos valernos de los comandos Copiar y Pegar clásicos más los comandos Add y Delete de Tortoise o bien recurrir a la línea de comandos de SVN y utilizar los comandos svn copy y svn move.
- Por último, si queremos deshacer los cambios hechos desde la última actualización, podemos recurrir al comando Revert.
Subir cambios (Commit)
Para integrar los cambios que realizamos al repositorio se recomienda lo siguiente:
- Verificar que el código funcione bien y no impida a otros usuarios, al menos, compilar la aplicación. Si subimos un cambio que impide a que otros usuarios puedan compilar el proyecto estaremos bloqueando el avance del proyecto.
- Verificar que el proyecto no tenga referencias a rutas en nuestra propia PC. Idealmente, cualquier usuario debería poder bajarse el proyecto listo para compilar sin necesidad de tener que contar previamente con librerías, DLLs o archivos adicionales en lugares específicos de su entorno. Para resolver esto, usualmente creamos una carpeta REF donde copiamos todas las dependencias del proyecto.
Para subir los cambios debemos hacer clic derecho sobre la carpeta raíz de nuestra copia de trabajo y seleccionar la opción Commit de Tortoise SVN. Esto abrirá un formulario donde debemos escribir un mensaje que describa los cambios que estamos subiendo. También podremos hacer una revisión previa sobre los cambios que se subirán.
Revisiones
Cada archivo tiene asociado un número de revisión y cada commit genera un incremento en el número de revisión de los archivos involucrados. Es por eso que en una Working Copy podemos llegar a tener archivos de diferentes revisiones. Del mismo modo, una revisión del proyecto puede tener archivos con distinas revisiones. Por ejemplo si en la Revisión 1 se modifica el archivo A pero no el B, se creará una nueva revisión 2, y el archivo A será de la revisón 2 pero el B segurá siendo 1, ya que no se modificó.
Sin embargo, es posible volver atrás a un número de revisión anterior a nivel de archivos. Para esto nos valemos del mismo comando update, aunque especificando la revisión a la cual queremos actualizar.
Qué archivos subir
Generalmente no conviene agregar al repositorio archivos que son el resultado de la compilación de una aplicación. En el caso de proyectos .NET, no agregaremos nunca las carpetas bin ni obj, ni ninguno de los archivos que en ellas se generan. Esto se debe a que muchas veces el compilador borra y recrea estos archivos cada vez que compila. Al borrarse por fuera de Tortoise SVN, y luego volver a crearse, serán considerados como archivos diferentes y cuando otro usuario quiera bajarse una actualización, Tortoise SVN tratará de agregar un archivo como nuevo donde ya existe otro; esto causará conflictos innecesarios.
Tampoco es recomendable subir archivos que guarden preferencias de usuario.
Resolviendo conflictos
En ocasiones, cuando bajemos una actualización, tal vez encontremos un conflicto. Esto puede darse si dos usuarios realizan cambios que no son posibles de combinar. En estos casos, la ventana de Update de Tortoise SVN mostrará los errores.
Para resolver los conflictos tenemos que hacer clic derecho sobre los errores que encontremos en la ventana de Update y elegir la opción Edit conflict. Esto abrirá una ventana donde podremos ver a la par cada una de las versiones: la versión del repositorio y nuestra copia de trabajo. En esta aplicación podemos analizar el archivo línea a línea y, por cada una, elegir qué versión queremos utilizar. Al finalizar la edición es importante cliquear Mark as resolved para indicarle a Tortoise que ya hemos resuelto el conflicto.
Más información
Subversion es aún muchísimo más amplio y sería imposible abarcar todo en un solo artículo. Un excelente recurso para tener siempre a mano como referencia es el libro Control de versiones con Subversion y la misma ayuda de Tortoise SVN.
Publique su comentario
Comentarios
jack 2009-09-09 00:00:00
Doc buen dia. tengo archivos repositorio.svn y server.svn
el dilema es como los visualizo o como hago accedo a la estructura de directotios y archivos que estan dentro del este encapsulado.
se pude importar, he probado con tortoise, subclipse ,subversion etc y ya me enrede con ello.
sabes importar archivos *.svn desde Flex builder. le instale el plugin y aun asi no logro hacerlo.
Gracias totales!!!
GONZALO SUAREZ 2009-11-10 00:00:00
El motivo del presente es consultar si ustedes me pueden brindar información sobre el proceso que realizan para pasar a producción las nuevas versiones, el motivo de la consulta es por que en la empresa en la que trabajo Subversion 1.5 pero solo como almacenamiento y control de las versiones y deseamos encontrar la forma de que el proceso de puesta en producción sea automático, Les agradezco cualquier información que me puedan brindar al respecto.
Marcelo Ruiz 2009-11-11 00:00:00
Hola Gonzalo,
Comprendo lo que decís, pero nosotros estamos precisamente en busca de lo mismo.
Estamos analizando todavía productos como CruiseControl, FinalBuilder y Visual Studio Team System que parecen ser los más populares, pero todavía no los hemos podido probar.
También hemos experimentado con scripts propios (archivos bat) para automatizar "un poco más", pero no avanzamos mucho todavía.
Saludos!
GONZALO SUAREZ 2009-11-11 00:00:00
Muchas gracias de todas formas, seguire buscando y si encuentro algo lo compartire por este medio.
Lucas 2010-08-25 00:00:00
Excelente articulo para entender SVN, aca tambien les dejo un link para usar SVN desde la linea de comandos http://www.hasheado.com/usando-subversion-desde-la-linea-de-comandos.html

