Aprendiendo los sistemas de control de versiones: Introducción

A ver si sé explicar lo que es un sistema de control de versiones.
Pongamos en primer caso el ejemplo sencillo de controlar las versiones de un archivo de… pongamos un archivo de texto (no tiene porque ser siempre de código) que hago yo mismo.

Y sigamos suponiendo que trabajamos con él como siempre: Modificando un sólo fichero.
Ahora dejamos de lado el fichero durante un tiempo. Volvemos a él y nos fijamos en un parrafo que hay en medio del fichero del texto acerca de unas helices que tienen una forma en ese.
Y yo me pregunto… ¿Por qué puse ese texto? ¿Acaso hubiera puesto en alguna versión algo más apropiado que “forma en ese” o quizás era algo peor?
Si suponemos que hacemos copias de seguridad regulares de nuestros ficheros es posible que veamos el cambio en alguna de ellas.
No obstante esto tiene algunos inconvenientes: Por un lado hay que leerse todo el fichero completo de la copia de seguridad (aunque alguno sabrá que la utilidad diff ayuda a ello).

Por otro lado es harto posible que junto al cambio del texto no nos aparezca la razón o la descripción del cambio en cuestión.
Todos estos pequeños problemas los gestiona el sistema de control de versiones. Qué cambios haces, en qué lineas del texto y qué razón o descripción le das al cambio son guardadas.
Ahora que lo hemos entendido hagamos un ejercicio de abstracción. Esto es mi documento pero ¿qué pasa si es un documento compartido, qué pasa si es editado por varias personas?
Si la descripción que le pone una de las personas es insuficiente habrá que preguntarle pero ¿Como sabemos quien hizo el cambio?
Pues, claro que sí, el sistema de control de ver

siones también lleva el registro no sólo de qué se modifica y qué descripción se le da sino de también de qué usuario del sistema lo ha modificado.

Esto es un gran avance pero aún hay más. Ahora en vez de abstraernos en cuánto a los usuarios nos vamos a abstraer con respecto al código fuente de un programa.
Es el tema de las ramas. Casi seguro que conoceréis el navegador libre Firefox. Y seguro que habréis notado las notables diferencias entre las versiones 1.x, 2.x y 3.x.
Pues bien, Firefox no tiene un sistema de control de versiones por cada rama sino que tiene un solo sistema de control de versiones que, ojo al dato, soporta ramas.
Es decir, cuándo hacemos una modificación del código podemos escoger en qué rama hacemos la modificación. (Aunque la mayoría de los usuarios trabajamos en una rama u otra del código sin llegar a escoger rama conscientemente)
Resumiendo:
– Modificar un fichero de la manera clásica es muy complicado con respecto a los cambios que se han hecho
– Los sistemas de control de versiones llevan un registro de los cambios en las lineas y ficheros dónde se han producido
– Los SCV también gestionan la autoría de los cambios.
– Los SCV también soportan varias ramas de desarrollo en paralelo.
Seguiremos con el tema.

Anuncios

Etiquetas: , , ,

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: