Los sistemas de control de versiones nos sirven para la gestión de los diversos cambios que se realizan sobre los elementos de algún producto o una configuración del mismo.
Normalmente es usado en el desarrollo del software, donde un equipo puede estar trabajando con los mismos ficheros. Cada cambio realizado se identifica por un código, el cual tiene asignado un ‘timestamp’ y la persona que realizó ese cambio.
Gracias a este control del cambio, nos permite poder volver a cualquier versión anterior del diseño.
Este tipo de control hoy en día se aplica sobre cualquier formato,no sólo código fuente, sino sobre cualquier tipo de fichero o incluso en gestores de información tipo WIKI.
Los sistemas de control de versión tradicionales, tienen en común una serie de características tales como:
- Centralizados, existe un servidor que controla el repositorio de los ficheros.
- Almacenaje de ficheros
- Edición de ficheros.
- Bloqueo de ficheros, impide a otros usuarios usar ese fichero al mismo tiempo.
- Registro histórico de acciones realizadas.
- Unificar código (merge), si varios usuarios editan un fichero, la aplicación une los diferentes cambios.
El funcionamiento del mismo se basa en un repositorio histórico central, el cual el usuario puede acceder para crear una copia local para de ese modo modificar ficheros. Una vez el usuario ha terminado de editar esos ficheros, los añade al repositorio central.
Hoy en día existen diferentes tipos de software para la gestión de control de versiones. Están proliferando nuevas formas de uso, como comunidades de desarrollo on line, o el almacenaje de ficheros en la nube.
Dejo una lista de los sistemas mas popular y de algunos nuevos:
CVS
Concurrent Versions System, quizás uno de los más usados y probablemente de los más antiguos que se usan hoy en día. Obsoleto.
SVN
Subversion, ha sido el más usado por los proyectos de tipo GNU, principalmente por Apache. Es más moderno que CVS y mejor ya que soluciona todas las carencias del anterior. Existen multitud de herramientas, plugins etc.
Git
Es uno de los mas modernos que podemos encontrar. Famoso por ser creado por Linus Torvalds y debido a las páginas web que proporcionan servicio de hosting gratuito en la nube, si el proyecto es GPL, ej: GitHub.com
Wikimedia
Este es el claro ejemplo de software web que controla versiones de textos. En este caso se guardan todas las versiones que han habido de un artículo. Muy famoso ya que se usa en wikipedia.com.
Dropbox
Este servicio de hosting de ficheros en la nube nos ofrece a parte de almacenaje; un control de versiones, posibilidad de compartir carpetas con otros usuarios, sincronización automática sobre los ficheros, restauración de ficheros, copias de seguridad, acceso a los f icheros mediante web, etc. Realmente útil y fácil de usar.
Bibliografía
http://en.wikipedia.org/wiki/Revision_control
http://en.wikipedia.org/wiki/Comparison_of_revision_control_software