Subversion

8 01 2011

Subversion

Subversion es un controlador de versiones empleado en la administración de archivos utilizados en el desarrollo de software o contenido. CVS — considerado su antecesor — es uno de los controladores de versiones más utilizados en proyectos de software libre , sin embargo, a pesar de su amplio uso, el mismo diseño de CVS resultó ineficiente para diversos grupos de usuarios, y ante estas inconformidades se dio inicio al proyecto que hoy es conocido como : Subversion , mismo que ha empezado a socavar el dominio de CVS.

Si no esta familiarizado con el concepto de control de versiones o CVS en sí, es recomendable observe descripción general de CVS o nuestra guia de CVS para que comprenda el impacto y uso que tiene Subversion en un desarrollo.

Diferencias entre CVS y Subversion

Si es un usuario ávido de CVS, estas son las principales ventajas que le ofrece Subversion sobre CVS :

  • Fuerte integración con Apache : Esto permite definir controles de acceso avanzados y navegación vía web para consultar el deposito de archivos, proceso carente en CVS.
  • Transparencia al eliminar y cambiar nombres de archivos : Si ha intentando este ultimo proceso en CVS, seguramente sabrá que requiere intervención manual en el deposito para lograrlo, Subversion contempla esta deficiencia y la corrige con éxito.
  • Copias ligeras sobre ramificaciones : La generación de ramificaciones en CVS además de ser un proceso involucrado implica la generación de una copia nueva en el deposito, mismo mecanismo que hace crecer exponencialmente el tamaño del deposito, Subversion independientemente del numero de ramificaciones creadas mantiene un árbol diferencial de cambios, minimizando así el espacio consumido en el deposito.
  • Copias diferenciales de archivos binarios : Basado en el mismo principio de copias ligeras, Subversion es capaz de mantener un control diferencial sobre cualquier archivo binario del deposito así reduciendo el consumo de espacio, esto contrastado con CVS que requiere archivar copias completas de un archivo binario cada vez que éste cambia.

COMO FUNCIONA

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:

  1. 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.
  2. 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.
INSTALAR SUBVERSION EN WINDOWS EN 5 PASOS Y CON BACKUP INCLUIDO

Subversion (SVN) es una aplicación para el control de versiones que nos permite gestionar los cambios y versiones que realizamos en nuestros desarrollos de una forma sencilla. Es mucho mas intuitivo que el antiguo CVS y mas versátil que SourceSafe. En este post no vamos describir que es SVN o CVS, son proyecto Open Source con una gran comunidad y existe abundante información en Internet sobre ellos. Nuestro objetivo es instalar SVN de la forma más sencilla, pero con la suficientemente configuración para que podamos trabajar sin problemas (multipuesto y con backups).

Antes de empezar, indicaros que existe un proyecto que persigue instalar SVN con un sólo click (svn1clicksetup) . Ciertamente, funciona e instala en un solo paso todo lo necesario, pero en nuestro caso queremos tener un poco mas de control sobre la instalación y lo haremos en 5 pasos.

La instalación más sencilla de Subversión (SVN) (a parte de la opción de instalación en monopuesto) es utilizar el servidor Svnserve en lugar de Apache. Snvserver en un servidor ligero (lightweight) e independiente (stand-alone) que utiliza un protocolo especifico (svn) sobre una conexión TCP/IP. En la mayoría de los casos no sólo es más sencillo configurar Snvserve en lugar de un servidor basado en Apache, sino que además es más rápido.

Para la parte cliente, os recomendamos usar TotoiseSVN, es una herramienta que se integra con el Explorador de Windows y permite gestionar nuestros ficheros de una forma muy sencilla.

Requisitos:

  • WindowsXP / Windows 2003 Server.
  • Servidor Svnserve 1.4.3 (versión utilizada en este post)
  • TortoiseSVN 1.4.3 (versión utilizada en este post)

Pasos para instalar SVN:

1) Instalar Snvserve

  • a) Obtener la última versión del servidor Svnserve aquí.
  • b1) Si tienes el instalable para Windows, sólo ejecutarlo.
  • b2) Si tienes un archivo zip con los binarios, crea un directorio, Por ejemplo, c:\svnserve (<directorio_de_Svnserve>). Copia todos los ficheros de zip.

2) Instalar TotoiseSVN (Es necesario reiniciar el PC)

  • b) Ejecutar la instalación de TortoiseSVN.

3) Configurar el servidor

  • a) Crear un directorio donde estarán los repositorios de SVN, por ejemplo: c:\repos (<directorio_de_repositorios>).
  • b) Crear un servicio de Windows para arrancar y parar fácilmente el Servidor de SVN. En una ventana de la consola de Windows ejecutar el siguiente comando:

sc create svn.local binpath= "\"<directorio_de_Svnserve>\svnserve.exe\" ----service ----root <directorio_de_repositorios>" displayname= "Subversion Repository" depend= Tcpip

  • Donde:
    • <directorio_de_Svnserve> : Es el directorio donde instalamos el servidor Svnserver (Paso 2b).
    • <directorio_de_repositorios> : Es el directorio que hemos creado para los repositorios. (Paso 3a)
  • c) Arrancar el servicio de SVN. En la ventana de gestión de servicios de Windows (Panel de control de Windows -> Herramientas administrativas -> Servicios), buscar el servicio “Subversión Repository” e inicializarlo.

4) Añadir un nuevo proyecto de desarrollo

  • a) Crear un directorio dentro del directorio de repositorios, en nuestro ejemplo c:\repos\test. El repositorio se creará dentro de este directorio, aseguraros de que el directorio esta vacío y no tiene protección contra escritura.
  • b) Botón derecho encima del directorio y con tortoiseSVN crea un repositorio (Opción “Create repository here…”).
  • c) Selecciona “Native filesystem (FSFS)”, es menos problemática con configuraciones en red. NOTA: TortoiseSVN creará varios ficheros dentro del directorio, NO cambiar NADA.
  • d) Editar los ficheros de configuración. NO tocar nada más. En el directorio del ejemplo c:\repos\test\conf editar los ficheros:
  • Fichero svnserve.conf, añadir

[general]
# Solo acceso a usuarios autorizados.
auth-access = write
# Fichero de usuarios.
password-db = passwd

  • Fichero passwd, añadir

[users]
# listado de usuarios y password
usuario = pass

5) Crear un proceso de Backup de nuestros ficheros

  • a) Crea un directorio donde guardar el Backup, en el ejemplo c:\SvnBackup
  • b) Crear un fichero RealizaBackupSVN.bat y añade el siguiente shell script.

rem borra el contenido del anterior backup
del "c:\SvnBackup" /S /F /Q
rd c:\SvnBackup /S /Q
md c:\SvnBackup

rem backup en caliente
c:\<directorio_de_Svnserve>\svnadmin.exe hotcopy c:\repos\test c:\SvnBackup

  • c) Crea una tarea programa de Windows que ejecute el shell script anterior, puede ser a cualquier hora ya que la copia se hace en caliente y no es necesario parar el servidor de SVN.
  • NOTA: Si el backup falla, y borramos el anterior backup podemos quedarnos sin ninguna copia de seguridad. Esto se puede resolver fácilmente haciendo un backup previo antes de borrar los ficheros.

INSTALAR SUBVERSION EN SOFTWARE LIBRE

http://www.guia-ubuntu.org/index.php?title=Subversion


Acciones

Information

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: