Un Sistema de Control de Versiones, es un sistema que registra (guarda) todos los cambios que se hicieron a un archivo (o conjunto de archivos) a lo largo del tiempo, con el propósito de si se requiere más adelante se puedan recuperar versiones específicas.
Si eres un diseñador y estás trabajando en un nuevo diseño.
Eres un escritor y estás trabajando en un libro.
Quizá un desarrollador y estás trabajando en un nuevo programa.
Lo que estas tres personas tienen en común respecto a su trabajo es que quizá quieran guardar versiones de su proyecto para ir viendo sus avances. O quizá se equivocaron en algo y quieren modificar lo que está causando algún problema. Quizá quieren comparar los cambios que han hecho respecto a la vida de su proyecto.
Es aquí que un Sistema de Control de Versiones es la herramienta que los beneficiará para regresar a cualquier estado de su proyecto.
Es común que guardemos el original y trabajemos sobre una copia por si algo no resulta bien, o guardemos una copia de la copia sólo por si las dudas, o una copia de la copia de la copia.
-Ya no sé dónde me quedé. -¡Ah sí! El Sistema de Control de Versiones te ahorrará mucho dolor de cabeza y hará esto de manera automática, y podrás dejar de hacer tantas copias.
Pero en este caso nos enfocaremos a el Sistema de Control de Versiones para el desarrollador, también conocido en inglés como Version Control System (VCS).
El Sistema de Control de versiones puede ser de dos tipos:
Sistema de Control de Versiones Centralizada. La cuál tiene un solo servidor que contiene todas las versiones de los archivos, y un número de clientes que se conecta al servidor.
Las ventajas que ofrece es que todos conocen (a cierto grado) lo que cada quien está haciendo en el proyecto. Los administradores tienen el control sobre lo que puede hacer cada desarrollador.
Las desventajas son que si el servidor “se cae” por una hora, en ese hora nadie puede colaborar o guardar nada de lo que están trabajando en ese proyecto. Si el disco duro donde se encuentra la base de datos principal se corrompe y no se hicieron respaldos correspondientes, es muy probable que se pierda todo. Al estar “centralizado” en un solo lugar, arriesgar a perder todo.
Ejemplos de Sistemas de Control de Versiones Centralizadas:
- CVS
- Subversion
- Perforce
Sistema de Control de Versiones Distribuidas. Los desarrolladores no sólo pueden consultar la última captura de los archivos, sino tienen una copia total del repositorio, incluyendo todo el historial de versiones. En este caso si algún servidor “cae”, cualquier repositorio de los desarrolladores puede ser copiado nuevamente en el servidor y restaurar todo. Cada clon es un respaldo completo de todos los datos.
Ejemplos de Sistemas de Control de Versiones Distribuidas:
- Git
- Mercurial
- Bazaar
- Darcs
Conclusión
Un Sistema de Control de Versiones es un sistema que controla (guarda) todas las modificaciones que vas haciendo a lo largo del desarrollo de tu proyecto. Y pueden ser centralizadas o distribuidas.
¿Qué Sistema de Control de Versiones usas?