Las versiones hacen
referencia a la evolución de un único elemento, dentro de un
sistema software. La evolución puede representarse en forma de
grafo, donde los nodos son las versiones y los arcos corresponden a
la creación de una versión a partir de otra ya existente.
Grafo
de evolución simple: las revisiones sucesivas de un
componente dan lugar a una simple secuencia lineal. Esta evolución
no presenta problemas en la organización del repositorio y las
versiones se designan mediante números correlativos.
Variantes: en este
caso, existen varias versiones del componente. El grafo ya no es una
secuencia lineal, si no que adopta la forma de un árbol. La
numeración de las versiones requerirá dos niveles. El primer número
designa la variante (línea de evolución) y el segundo la versión
particular (revisión) a lo largo de dicha variante.
La terminología que se
usa para referirse a los elementos del grafo son:
- Tronco
(trunk): es la variante principal.
- Cabeza
(head): es la última versión del tronco.
- Ramas
(branches): son la variantes secundarias.
- Delta: es el
cambio de una revisión respecto a la anterior.
Propagación de
cambios: cuando se tienen variantes que se desarrollan en
paralelo, suele ser necesario aplicar un mismo cambio a varias
variantes.
Fusión de variantes: en determinados momentos puede dejar de ser necesario mantener una
rama independiente. En este caso se puede fundir con otra (MERGE).
Técnicas de
almacenamiento: como en la mayoría de los casos, las distintas
versiones tienen en común gran parte de su contenido, se organiza el
almacenamiento para que no se desaproveche espacio repitiendo los
datos en común de varias versiones.
- Deltas directos: se
almacena la primera versión completa, y luego los cambios mínimos
necesarios para reconstruir cada nueva versión a partir de la
anterior.
- Deltas inversos: se
almacena completa la última versión del tronco y los cambios
necesarios para reconstruir cada versión anterior a partir de la
siguiente. En las ramas se mantiene el uso de los deltas directos.
- Marcado selectivo: se
almacena el texto refundido de todas las versiones como una
secuencia lineal, marcando cada sección del conjunto con los
números de versiones que corresponde.
En cuanto a la gestión de entregas,
en primer lugar definimos el concepto de entrega como una instancia
de un sistema que se distribuye a los usuarios externos al equipo de
desarrollo.
La planificación de la
entrega se ocupa de cuándo emitir una versión del sistema como una
entrega. La entrega está compuesta por el conjunto de programas
ejecutables, los archivos de configuración que definan como se
configura la entrega para una instalación particular, los archivos
de datos que se necesitan para el funcionamiento del sistema, un
programa de instalación para instalar el sistema en el hardware de
destino, documentación electrónica y en papel, y, el embalaje y
publicidad asociados, diseñados para esta entrega Actualmente los
sistemas se entregan en discos ópticos (CD
o DVD)
o como archivos de instalación descargables desde la red.