Control de versiones git vs svn

Solo disponible en BuenasTareas
  • Páginas : 14 (3272 palabras )
  • Descarga(s) : 0
  • Publicado : 11 de octubre de 2010
Leer documento completo
Vista previa del texto
Control de versiones

1. Introducción
Una versión, revisión o edición de un producto, es el estado en el que se encuentra dicho producto en un momento dado de su desarrollo o modificación. Se llama control de versiones a la gestión de los diversos cambios que se realizan sobre los elementos de algún producto o una configuración del mismo. Los sistemas de control de versiones facilitan laadministración de las distintas versiones de cada producto desarrollado, así como las posibles especializaciones realizadas (por ejemplo, para algún cliente específico).

El control de versiones se realiza principalmente en la industria informática para controlar las distintas versiones del código fuente. Sin embargo, los mismos conceptos son aplicables a otros ámbitos como documentos, imágenes,sitios web, 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, Bazaar, Plastic SCM, Git, Mercurial, etc.).
2. Características
Un sistema de control de versiones debe proporcionar:
* Mecanismo de almacenaje de los elementos que debagestionar (ej. archivos de texto, imágenes, documentación...)
* Posibilidad de realizar cambios sobre los elementos almacenados (ej. modificaciones parciales, añadir, borrar, renombrar o mover elementos)
* Registro histórico de las acciones realizadas con cada elemento o conjunto de elementos (normalmente pudiendo volver o extraer un estado anterior del producto)
Aunque no esestrictamente 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 puede establecer está basada en el almacenamiento del código:
* Centralizados: existe un repositorio centralizado de todo elcódigo, del cual es responsable un único usuario (o conjunto de ellos). Se facilitan las tareas administrativas a cambio de reducir flexibilidad, pues todas las decisiones fuertes (como crear una nueva rama) necesitan la aprobación del responsable. Algunos ejemplos son CVS y Subversion
* Distribuidos: cada usuario tiene su propio repositorio. No es necesario tomar decisionescentralizadamente. Los distintos repositorios pueden intercambiar y mezclar revisiones entre ellos. Ejemplos: Git y Mercurial
4. Funcionamiento
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 usuarios puedecrearse 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. Este proceso se suele conocer como check out o desproteger. 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 sedesea modificar y el sistema se encargará de impedir que otro usuario pueda modificar dicho elemento.
* 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 posible aparición de conflictos que deban 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 publicar, commit, check in o proteger.
5.1 Vocabulario común
La terminología empleada puede variar de sistema a sistema, pero a continuación...
tracking img