Control de versiones

El control de versiones (también conocido como control de revisiones o control de fuentes) es una categoría de procesos y herramientas diseñadas para realizar un seguimiento de múltiples versiones diferentes de software, contenido, documentos, sitios web y otra información en desarrollo. Cualquier sistema que proporcione seguimiento de cambios y control sobre la programación del código fuente y la documentación puede considerarse software de control de versiones. La práctica ha sido parte de los procesos creativos casi desde que existe la escritura.

El propósito del control de versiones es garantizar que los cambios de contenido en desarrollo se realicen según lo planeado. Si bien el control de versiones a menudo se lleva a cabo mediante una aplicación separada, también puede integrarse en programas como entornos de desarrollo integrados (IDE), procesadores de texto, hojas de cálculo y, especialmente, documentos y páginas web colaborativos. El control de versiones permite que los servidores en múltiples ubicaciones ejecuten diferentes versiones en diferentes sitios, incluso mientras esas versiones se actualizan simultáneamente.

Los sistemas de control de versiones más potentes y complejos se utilizan en el desarrollo de software. El control de versiones a menudo opera bloqueando archivos y usando un sistema de check-out / check-in para las versiones cambiadas. Las versiones pueden identificarse mediante etiquetas o rótulos; las versiones aprobadas o las que son especialmente significativas pueden designarse como líneas de base. Diferentes grupos o individuos pueden trabajar en versiones extraídas como código de bifurcación desde el tronco principal. Cuando las versiones se comprueban y se registran, es seguro que la primera en registrar será exitosa. Si se extraen otras versiones, algunos sistemas pueden proporcionar la combinación de versiones para permitir que se agreguen más cambios al repositorio central.

Otro método utilizado en el control de versiones es la ramificación, en la que los programas en desarrollo se copian para su desarrollo en versiones paralelas, conservando el original y trabajando en la ramificación o realizando diferentes cambios en cada uno. Cada copia se considera una rama; el programa original del que se toma la rama se denomina troncal, línea base, línea principal o maestro.

El control de versiones se basa generalmente en un modelo cliente-servidor. Otro método es el control de versiones distribuidas, en el que todas las copias están en un repositorio de base de código y los cambios se sincronizan a través de parches o cambios compartidos de igual a igual.

Los términos control de versiones y control de versiones a veces se usan indistintamente aunque sus significados técnicos sean diferentes.