Capítulo 2. Conceptos básicos de control de versiones

Tabla de contenidos

El repositorio
Modelos de versionado
El problema de compartir archivos
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 reconocen 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 libro de Subversion está disponible aquí: http://svnbook.red-bean.com/.

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

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

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 archivos - una jerarquía típica de archivos y directorios. Un número de clientes se conectan al repositorio, y luego leen o esriben esos archivos. Al escribir datos, el cliente hace que la información esté disponible para los otros; al leer los datos, el cliente recibe 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 archivos típico. Y de hecho, el repositorio es una clase de servidores de archivos, 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 archivo, e incluso los cambios en el propio árbol de directorios, como el añadir, borrar o reorganizar archivos y directorios.

Cuando un cliente lee datos de un repositorio, normalmente ve solo la última versión del árbol de archivos. Sin embargo el cliente también tiene la capacidad de ver los estados previos del sistema de archivos. Por ejemplo, un cliente podría hacer preguntas como ¿Qué contenía este directorio este miércoles? o¿quién fue la última persona en editar este archivo y qué cambios realizó?Estas son el tipo de preguntas que deberían estar en el epicentro de cualquier sistema de control de versiones: sistemas diseñados para guardar y registrar las modificaciones de los datos a lo largo del tiempo.