Capítulo 2. Conceptos básicos

Tabla de contenidos

El repositorio
Modelos de versionado
El problema de compartir ficheros
La solución bloquear-modificar-desbloquear
La solución copiar-modificar-fusionar
¿Qué hace Subversion?
Subversion en acción
Copias de trabajo
URLs de repositorio
Revisiones
Cómo se unen las copias de trabajo al repositorio
Sumario

Este capítulo es una versión ligeramente modificada del mismo capítulo en el libro de Subversion. Una versión en línea del libreo de Subversion está disponible aquí: http://svnbook.red-bean.com/.

Este capítulo es una introducción corta e informal a Subversion. Si el control de versiones es nuevo para usted, este capítulo es definitivamente para usted. Empezamos con una discusión de los conceptos generales de control de versiones, nos hacemos camino dentro de las ideas específicas que hay tras Subversion, y mostramos algunos ejemplos sencillos de Subversion en acción.

Incluso aunque los ejemplos en este capítulo muestran a gente compartiendo colecciones de código fuente de programas, tenga en cuenta que Subversion puede manejar cualquier collección de ficheros - no está limitado a ayudar a los programadores de ordenadores.

El repositorio

Subversion es un sistema centralizado para compartir información. En su núcleo está un repositorio, que es un almacén central de datos. El respositorio almacena información en forma de un árbol de ficheros - una jerarquía típica de ficheros y directorios. Cualquier número de clientes se conectan al repositorio, y luego leen o esriben esos ficheros. Al escribir datos, el cliente hace que la información esté disponible para los otros; al leer los datos, el cliente recibe la información de los demás.

Figura 2.1. Un sistema típico cliente/servidor

Un sistema típico cliente/servidor

¿Y ésto por qué es interesante? Por ahora, eso suena a la definición típica de un servidor de ficheros típico. Y de hecho, el repositorio es una clase de servidores de ficheros, pero no el habitual. Lo que hace al repositorio de Subversion especial es que recuerda todos los cambios que alguna vez se hayan escrito en él: cada cambio en cada fichero, e incluso los cambios en el propio árbol de directorios, como el añadir, borrar o reorganizar ficheros y directorios.

Cuando un cliente lee datos de un repositorio, normalmente ve únicamente la última versión del árbol de ficheros. Pero el cliente también tiene la capacidad de ver estados previos del sistema de ficheros. Por ejemplo, un cliente puede hacer preguntas históricas, como “¿qué contenía este directorio el último miércoles?”, o “¿quién fue la última persona que cambió este fichero, y qué cambios hizo?” Esta es la clase de preguntas que forman el corazón de cualquier sistema de control de versiones: son sistemas que están diseñados para guardar y registrar los cambios a los datos a lo largo del tiempo.