Control de versiones software

Solo disponible en BuenasTareas
  • Páginas : 14 (3380 palabras )
  • Descarga(s) : 0
  • Publicado : 1 de junio de 2010
Leer documento completo
Vista previa del texto
Controlador de versiones

1 Se le llama asi, a la gestión de versiones de todos los elementos de configuración de un producto o una configuración del mismo. Los sistemas de control de versiones facilitan la administración de las distintas versiones de cada producto desarrollado junto a las posibles especializaciones realizadas para algún cliente específico.

El control de versiones serealiza principalmente en la industria informática para controlar las distintas versiones del Software. Sin embargo, los mismos conceptos son aplicables a otros ámbitos y no sólo para software sino para documentos, imágenes, etcétera.

Aunque un sistema de control de versiones puede realizarse de forma manual, es muy aconsejable disponer de herramientas que faciliten esta gestión (CVS,Subversion, SourceSafe, ClearCase, Darcs, Plastic SCM, GIT, etc).

2 Características

Un sistema de control de versiones debe proporcionar:

• Mecanismo de almacenaje de cada uno de los ítems que deba gestionarse (archivos de texto, imágenes, documentación...)
• Posibilidad de modificar, mover, borrar cada uno de los elementos
• Histórico de las acciones realizadas con cada elementopudiendo volver a un estado anterior dentro de ese historial

Aunque no es estrictamente necesario, suele ser muy útil la generación de informes con los cambios introducidos entre dos versiones, informes de estado, marcado con nombre identificativo de la versión de un conjunto de ficheros, etcétera.

3 Clasificación

La principal clasificación que se pude establecer, está basada en elalmacenamiento del código:

• Centralizados: existe un repositorio centralizado de todo el código, del cual es responsable un único usuario (o conjunto de ellos). Se facilitan las tareas administrativas a cambio de reducir la potencia y flexibilidad, pues todas las decisiones fuertes (como crear una nueva rama) necesitan la aprobación del responsable.
• Distribuidos: se aumenta lacapacidad de decisión distribuida. Esto da más flexibilidad pero puede dificultar bastante la sincronización.

4 Terminología básica

Todos los sistemas de control de versiones se basan en disponer de un repositorio, que es el conjunto de información gestionada por el sistema. Este repositorio contiene el historial de versiones de todos los elementos gestionados.

Cada uno de los usuariospuede crearse una copia local duplicando el contenido del repositorio para permitir su uso. Es posible duplicar la última versión o cualquier versión almacenada en el historial. Para modificar la copia local existen dos semánticas básicas:

• Exclusivos: para poder realizar un cambio es necesario marcar en el repositorio el elemento que se desea modificar y el sistema se encargará de impedirque otro usuario pueda modificar dicho elemento. Este proceso se suele conocer como check out o desproteger.
• Colaborativos: en el que cada usuario se descarga la copia la modifica y el sistema automáticamente mezcla las diversas modificaciones. El principal problema es la aparición de conflictos que deben ser solucionados manualmente o las posibles inconsistencias que surjan al modificar elmismo fichero por varias personas no coordinadas. Además, esta semántica no es apropiada para ficheros binarios.

Tras realizar la modificación es necesario actualizar el repositorio con los cambios realizados. Habitualmente este proceso se denomina commit, check in o proteger.

1 Vocabulario común

La terminología empleada puede variar de sistema a sistema, pero a continuación sedescriben algunos términos de uso común.

Línea base ("Baseline")
Una revisión aprobada de un documento o fichero fuente, a partir del cual se pueden realizar cambios subsiguientes.
Rama ("branch")
Un conjunto de ficheros bajo control de versiones puede ser branched o forked en un momento de tiempo de forma que, desde ese momento en adelante, dos copias de esos ficheros puedan ser...
tracking img