¿Qué es SVN, CVS, SCC y por qué es importante? Programación.
Control de código fuente. Subversión. Proyecto en equipo.
Cualquier programador que trabaje en un pequeño proyecto, puede incluso crear y editar su código fuente con un simple editor de texto. Sin embargo, cuando te enfrentas a un proyecto de mayor envergadura (por ejemplo un componente en Joomla!) o lo realizáis entre varios programadores, sería de mucha ayuda el uso de herramientas más profesionales que un simple editor de texto. -¿Cómo crear un proyecto común? -¿Cómo volver a una versión anterior si obtienes un error?
SVN, CVS, SCC. El control de código fuente.
El IDE Eclipse, del que ya hemos hablado, es un entorno de desarrollo profesional y gratuito. Para tratar el tema de hoy me voy a centrar principalmente en él, aunque veremos otras alternativas.
Tal vez si trabajas con Eclipse verás que al crear un nuevo proyecto tienes para elegir varias opciones con las siglas: CVS:
Vamos a conocer su significado.
Imagina que varios amigos estáis programando en conjunto una aplicación. Se os pueden ocurrir las siguientes dudas:
- ¿Cómo podéis trabajar en un mismo código fuente varias personas a la vez? ¿Cómo coordinar esos cambios?
- Uno de vosotros ha borrado código que en la versión anterior funcionaba correctamente, ¿Cómo es posible recuperar solo ese código?
La solución a esto es posible gracias al control de código fuente (SCC) ya que se van guardando los archivos de código fuente y así se pueden registrar los cambios que se han ido realizando. En algunos casos, para optimizar el espacio en disco, se guardan únicamente los cambios realizados. De este modo, las modificaciones que se han guardado se pueden consultar y, si es preciso, restaurar. Las herramientas que facilitan esto se suelen denominar Sistemas de Control de Revisiones:
- CVS, en nuestro idioma Sistema de Versiones Concurrentes, es un sistema de control de revisiones muy popular distribuido bajo licencia GPL. Wikipedia lo explica muy bien. Su sitio oficial es: http://www.cvshome.org/.
- SVN o Subversion, es un sistema de control de revisiones de código abierto y multiplataforma que se diseñó como sucesor del anterior. Se basa en un repositorio central: es como un servidor de archivos pero con la peculiaridad de que recuerda todos los cambios que se hayan hecho a sus archivos y directorios. De este modo se puede volver a versiones antiguas de sus archivos y ver quién y cuándo se hicieron los cambios. Su página web es http://subversion.apache.org/ y está distribuido bajo licencia Apache. Es el que voy a utilizar.
Entender Subversion (SVN)
Antes de adentrarnos en la instalación, creo que para todo usuario que comienza es indispensable conocer qué es y cómo funciona Subversion de una forma generalizada. Yo voy a intentar explicarlo de la forma más sencilla que pueda y me voy a basar en el propio manual de SVN. Para entender todo con mucho más detalle, te remito a este enlace donde podrás visualizar un completo manual sobre SVN: http://svnbook.red-bean.com/nightly/es/index.html o puedes descargar el pdf desde aquí: http://svnbook.red-bean.com/nightly/es/svn-book.pdf
Vamos a conocer una serie de conceptos:
- Repositorio: Es la parte principal de Subversion y es el almacén central de datos y versiones de un número indeterminado de proyectos. Contiene árboles de ficheros y directorios; y cada árbol -cito textualmente el manual SVN- es una instantánea de cómo eran los ficheros y directorios versionados en tu repositorio en un momento determinado. Recuerda todos los cambios que se han hecho sobre él.
Si trabajan varias personas en un proyecto, pueden modificar con sus cambios el repositorio central. Los clientes, pueden conectarse al repositorio y leer o escribir en esos archivos.
¿Cómo se guardan los datos en un repositorio? -se encuentran en una base de datos, en concreto, en un fichero de base de datos Berkeley. Se puede acceder a los repositorios SVN a través de diferentes métodos, pero la ubicación de un repositorio es siempre una URL. - Copia de trabajo: Expresión usada literalmente en el manual de SVN.
¿Dónde vas a programar y editar los archivos? -En tu entorno de trabajo: en tu ordenador. Podrás descargar (check out) una copia (parcial) de un repositorio a tu ordenador. Ahí modificas los archivos, tu código fuente, puedes compilar y hacer tus pruebas y cuando verifiques que todo funciona correctamente, puedes "publicar" esos cambios escribiendo en el repositorio. Una copia de trabajo es un árbol de directorios de tu sistema de archivos locales. En tu copia de trabajo se generan también unos subdirectorios .svn -que no debes modificar- donde Subversion registra 2 datos esenciales:- revisión en la que está basado el fichero.
- marca de tiempo con la fecha de la última actualización del fichero desde el repositorio.
- Revisión: Realizas en tu copia de trabajo un cambio a un archivo. Publicas dicho cambio en el repositorio. Cada vez que el repositorio acepta un envío, este da lugar a un nuevo estado del árbol de ficheros llamado revisión, al que se le asigna un número natural único una unidad mayor que el número de la revisión anterior. Cuando inicialmente creas un repositorio este valor es cero y consiste en un directorio raíz vacío.
- Servidor SVN: ¿Necesitas un servidor SVN? Un repositorio se puede crear en un servidor SVN (por ejemplo, para trabajar varias personas en un proyecto y tener una gestión y control de usuarios y acceso) o de forma local (por ejemplo en un proyecto propio e individual donde el repositorio se instala en el lado cliente). ¿En qué servidor se puede instalar Subversion? Según su manual en:
- Apache utilizando el módulo mod_dav_svn para acceder a un repositorio y hacerlo disponible a los clientes a través del protocolo WebDAV/DeltaV.
- svnserve: pequeño programa servidor independiente que se comunica a través de un protocolo personalizado con los clientes.
Instalar SVN
SVN se puede utilizar usando línea de comandos o desde una interfaz. Voy a hacerlo sencillo de esta segunda forma, puedes usar:
- TortoiseSVN: Seguramente el cliente SVN más utilizado en Windows que se integra perfectamente. Su página web: http://tortoisesvn.net/
- RapidSVN: GUI compatible con Linux, Windows y Mac. Su página web: http://rapidsvn.tigris.org/
- Hay muchísimos más y para diferentes plataformas...
Yo voy a instalar TortoiseSVN. Su instalación es muy sencilla que veremos en el siguiente artículo. Sabremos también cómo crear con TortoiseSVN un repositorio local, sin necesidad de servidor y haremos un sencillo ejemplo con un archivo de texto para conocer su funcionamiento. Es un tema muy interesante, y para aprender, testear y para usuarios en un proyecto individual es interesante trabajar primeramente en un repositorio local.