You are on page 1of 9

SISTEMAS DE CONTROL DE VERSIONES

Concepto
Los SCV son aplicaciones que guardan en repositorios las versiones de un
software generadas en el transcurso de su desarrollo y evolucin. Se encargan
de gestionar los diferentes estados por los que pasa una aplicacin durante
todo el periodo de su desarrollo, guardando un historial con todos los cambios
realizados entre las versiones. Esto representa una importante ventaja para los
desarrolladores, ya que estas versiones pueden estar disponibles para ms
participantes distribuidos geogrficamente, propiciando que los actores
(stakeholders) puedan contribuir en forma organizada.
Adicionalmente, el SCV almacena en un repositorio la fecha y hora de los
cambios, as como el nombre del desarrollador que realiz las modificaciones,
destacando las diferencias entre los archivos antes y despus de los cambios.
El contar con esta informacin facilita el reconstruir archivos previos cuando
sea necesario, as como disponer en cualquier momento de las diferentes
versiones del cdigo fuente
Dos arquitecturas tpicas son las distribuidas y las centralizadas.
Los distribuidos son ms habituales en grandes proyectos donde los
desarrolladores se encuentran en mltiples localizaciones, se da la necesidad
de replicar los repositorios y donde se producen mltiples ramas que
terminarn (o no) fusionndose con la rama principal.
Las centralizadas, por el contrario, son ms habituales en pequeas empresas
y/o proyectos donde existe una mayor necesidad de trabajo en equipo.
Ventajas de sistemas distribuidos

Necesita menos veces estar conectado a la red para hacer operaciones.


Esto produce una mayor autonoma y una mayor rapidez.
Aunque se caiga el repositorio remoto la gente puede seguir trabajando
Al hacer los distintos repositorio una rplica local de la informacin de
los repositorios remotos a los que se conectan, la informacin est muy
replicada y por tanto el sistema tiene menos problemas en recuperarse
si por ejemplo se quema la mquina que tiene el repositorio remoto.
El servidor remoto requiere menos recursos que los que necesitara un
servidor centralizado ya que gran parte del trabajo lo realizan los
repositorios locales.
Al ser los sistemas distribuidos ms recientes que los sistemas
centralizados, y al tener ms flexibilidad por tener un repositorio local y
otro/s remotos, estos sistemas han sido diseados para hacer fcil el
uso de ramas (creacin, evolucin y fusin) y poder aprovechar al

mximo su potencial. Por ejemplo se pueden crear ramas en el


repositorio remoto para corregir errores o crear funcionalidades nuevas.
Pero tambin se pueden crear ramas en el repositorio locales para que
los usuarios puedan hacer pruebas y dependiendo de los resultados
fusionarlos con el desarrollo principal o no. Las ramas dan una gran
flexibilidad en la forma de trabajo.
Ventajas de sistemas centralizados

En los sistemas distribuidos hay menos control a la hora de trabajar en


equipo ya que no se tiene una versin centralizada de todo lo que se
est haciendo en el proyecto.
En los sistemas centralizados las versiones vienen identificadas por un
nmero de versin. Sin embargo en los sistemas de control de versiones
distribuidos no hay nmeros de versin, ya que cada repositorio tendra
sus propios nmeros de revisin dependiendo de los cambios. En lugar
de eso cada versin tiene un identificador al que se le puede asociar una
etiqueta (tag).

COMPARATIVA ENTRE DIFERENTES SISTEMAS DE


CONTROL DE VERSIONES
CVS
Concurrent Versions System o simplemente CVS, es un sistema de control de
versiones: mantiene el registro de todo el trabajo y los cambios en los ficheros
(cdigo fuente principalmente) que forman un proyecto y permite que distintos
desarrolladores (potencialmente situados a gran distancia) colaboren. Sus
desarrolladores difunden el sistema bajo la licencia GPL.
CVS utiliza una arquitectura cliente-servidor: un servidor guarda las versiones
actuales del proyecto y su historial. Los clientes se conectan al servidor para
sacar una copia completa del proyecto.
Ventajas

Utiliza arquitectura cliente-servidor.


El servidor guarda las versiones y el historial.
Los clientes se conectan y hacen una copia completa del proyecto.
Funciona en cualquier sistema operativo.
Varias personas pueden sacar una copia al mismo tiempo.
Puede mantener distintas ramas de un Proyecto.

Desventajas

No soporta refactorizacin de sistemas de forma automtica o


versionadas.
Limitada para UTF-8 Unicode o archivos con contenido diferente
ASCII.
El protocolo no soporta eliminacin de directorios o renombrarlos.
Visual Studio carece de soporte nativo a CVS,

SVN
Apache Subversion (SVN) es una herramienta de control de versiones libre
basada en un repositorio cuyo funcionamiento se asemeja enormemente al de
un sistema de ficheros. Es software libre bajo una licencia de tipo Apache/BSD.
Utiliza el concepto de revisin para guardar los cambios producidos en el
repositorio. Entre dos revisiones slo guarda el conjunto de modificaciones
(delta), optimizando as al mximo el uso de espacio en disco. SVN permite al
usuario crear, copiar y borrar carpetas con la misma flexibilidad con la que lo
hara si estuviese en su disco duro local. Dada su flexibilidad, es necesaria la
aplicacin de buenas prcticas para llevar a cabo una correcta gestin de las
versiones del software generado. SVN puede acceder al repositorio a travs de
redes, lo que le permite ser usado por personas que se encuentran en distintas
computadoras.
Ventajas

Se sigue la historia de los archivos y directorios a travs de copias y


renombrados.
Modificaciones atmicas.
La creacin de branch, y tags son operaciones eficientes.
Se envan slo las diferencias en ambas direcciones.
Maneja eficazmente los archivos binarios.
Permite el bloqueo de archivos.

Desventajas.
El manejo de cambio de nombres de archivos no es completo. Lo
maneja como la suma de una operacin de copia y una de borrado.
No resuelve el problema de aplicar repetidamente parches entre
ramas, no facilita llevar la cuenta de qu cambios se han realizado.
esto se resuelve siendo cuidadoso con los mensajes de commit.

GIT
Inicialmente desarrollado Linus Torvalds, Git ofrece un tipo diferente de control
de versiones, se trata de un sistema de control de versiones distribuido, donde
no hay una sola base de cdigo centralizada para obtener el cdigo. Las
diferentes ramas tienen diferentes partes del cdigo. Otros sistemas de control
de versiones, como SVN y CVS, usa el control de versiones centralizado, lo
que significa que slo se usa una copia maestra del software.
GitHub ha ayudado recientemente a establecer Git como un gran sistema de
control de versiones, ofreciendo una buena interfaz para muchos proyectos
grandes, tales como Rails y Prototype. Sin embargo, Git no es tan fcil de
aprender como CVS o SVN, por lo que es mucho ms difcil de usar para un
principiante.
Ventajas

Muy verstil y con figurable.


Distribuido, podemos hace commits en nuestra maquina local, por lo
que podemos seguir trabajando sin conexin a Internet subir los
cambios ms tarde.
Rpido, la mayora de operaciones son locales, resolucin de
conflictos a travs de herramientas mergetool y el editor meld.
Seguro, se puede trabajar incluso si el servidor esta cado sin perder
tiempo de trabajo.
La posibilidad de ver rpidamente la historia del proyecto con el
comando git log.

Desventajas

Curva de aprendizaje para los que vienen de SVN.


Muchos comandos y el significado de los comandos.
Disponibilidad, el cdigo esta en un solo repositorio.
Complejidad, recomendado para proyectos grandes.

Bazzar
Bazaar es un sistema de control de versiones distribuido patrocinado por
Canonical Ltd., diseado para facilitar la contribucin en proyectos de software
libre y opensource. Puede ser usado por un usuario nico trabajando en
mltiples ramas de un contenido local, o por un equipo colaborando a travs de

la red. Bazaar est escrito en lenguaje de programacin Python y tiene


versiones empaquetadas para la mayora de distribuciones GNU/Linux, as
como Mac OS X y MS Windows. Bazaar es software libre y parte del proyecto
GNU.
Ventajas

Se puede utilizar para adaptarse a cualquier tipo de proyecto.


Es fcil de modificar muy intuitivo.
Integrable se puede aadir proyectos existentes.
Tiene una comunidad fuerte que mantiene las cosas, como plug-ins y
bastantes herramientas de terceros como GUI para aadir interfaces
grficas para el sistema.

Desventajas

Se trabaja siempre con acceso al servidor remoto.


No es muy popular.
Consume ancho de banda.
Estadsticamente es lento.
El Launchpad es nuevo.

Team Foundation Server


Microsoft Visual Studio Team Foundation Server es un software propietario
cuya plataforma de colaboracin se encuentra en el ncleo de la solucin de
Visual Studio para la administracin del ciclo de vida de una aplicacin.
Proporciona servicios fundamentales como control de versiones, seguimiento
de elementos de trabajo y errores, automatizacin de la compilacin y almacn
de datos. TFS es un sistema centralizado que aporta una serie de herramientas
que permiten colaborar y coordinar las tareas de un equipo de trabajo para
llevar a cabo un proyecto, mejorando la comunicacin entre los integrantes.
Adems, permite la creacin de informes, implementacin de metodologas de
procesos, tendencia histrica y visibilidad del estado general del proyecto
mediante un panel basado en etiquetas. Adicionalmente, se pueden visualizar
mtricas en tiempo real que alertan sobre potenciales problemas en etapas
tempranas del desarrollo de software de modo que se puedan tomar las
decisiones basadas en datos y aplicarse las correcciones adecuadas. TFS
ofrece interfaces para facilitar la administracin y visualizacin de ramas y
manejo de cambios. Su sistema de reportes est basado en Windows Workflow
Foundation 4.0. Otra de las caractersticas importantes de TFS es el

almacenamiento de los datos del control de versiones en un servidor de base


de datos SQL. Es compatible con Git.

Rational ClearCase
Es una familia de programas informticos que soporta la gestin de
configuracin de software (SCM) de cdigo fuente y otros de desarrollo de
software activos. Tambin es compatible con la gestin del diseo, los datos de
los artefactos de diseo electrnico. ClearCase incluye el control de revisin y
constituye la base para la gestin de la configuracin en las empresas grandes
y medianas, con capacidad para proyectos con cientos o miles de
desarrolladores. Es desarrollado por IBM.
ClearCase admite dos modelos de gestin de configuracin: UCM (Unified
Change Management) y ClearCase de base. UCM proporciona un modelo de
salida de la caja, mientras que ClearCase base proporciona una infraestructura
bsica (UCM est construido sobre la base de ClearCase). Ambos pueden ser
configurados para soportar una amplia variedad de necesidades.
ClearCase puede acomodar grandes archivos binarios, un gran nmero de
archivos, y grandes tamaos de repositorio. Es compatible con ramificaciones,
etiquetado y control de versiones de directorios.

Mercurial
Mercurial es un sistema de control de versiones multiplataforma, para
desarrolladores de software. Est implementado principalmente haciendo uso
del lenguaje de programacin Python, pero incluye una implementacin binaria
de diff escrita en C. Mercurial fue escrito originalmente para funcionar sobre
GNU/Linux. Ha sido adaptado para Windows, Mac OS X y la mayora de otros
sistemas tipo Unix. Mercurial es, sobre todo, un programa para la lnea de
comandos. Todas las operaciones de Mercurial se invocan como opciones
dadas a su programa motor, hg (cuyo nombre hace referencia al smbolo
qumico del mercurio).
Las principales metas de desarrollo de Mercurial incluyen un gran rendimiento y
escalabilidad; desarrollo completamente distribuido, sin necesidad de un
servidor; gestin robusta de archivos tanto de texto como binario; y
capacidades avanzadas de ramificacin e integracin, todo ello manteniendo
sencillez conceptual. Incluye una interfaz web integrada.

El cdigo fuente se encuentra disponible bajo los trminos de la licencia GNU


GPL versin 2, lo que clasifica a Mercurial como software libre.
Ventajas

Rpido escalable.
Ms simple que Git.
No hay tantas funciones para aprender, son similares a los otros
sistemas.
Viene equipado con una interfaz Web independiente y una amplia
documentacin en la comprensin de mercurial.
Es liviano.

Desventajas

Solo se usa en proyectos grandes.

TABLAS COMPARATIVAS ENTRE SISTEMAS DE


CONTROL DE VERSIONES

Tabla Comparativa General e Informacin Tcnica de SCV


Herramient
a

Primer
a
Versi
n

Precio/Lic
encia

Tipo
Repositorio

CVS
SVN

1990
2000

GIT

2005

GPL
Apache
Licence
GPLv2

Bazzar

2007

GPL

Distribuido

TeamFound
ation
Rational
ClearCase

2006

$1199

1992

Mercurial

2005

$4600
por
licencia
GPL

Centralizado/Dis
tribuido
Centralizado

Identificaci
n
de
Revisiones

Alcance
cambio

Historia
cambios

Centralizado
Centralizado

Nmeros
Nmeros

Fichero
rbol

Distribuido

SHA-1
hashes
Pseudoalea
torio
Nmeros

rbol

Changeset
Changeset/S
napshot
Snapshot

rbol

Snapshot

Fichero
y rbol
Fichero

Changeset

rbol

Changeset

Distribuido

de

Nmeros

SHA-1
hashes

de

Changeset

Unicode

Internacionalizac
in

Permisos del
repositorio

Rplica del
repositorio

repositorio Traza de historia


del fichero o

CVS
SVN
GIT
Bazzar
TeamFound
ation
Rational
ClearCase
Mercurial

renombrados Fusin de
ficheros

Herramienta

directorios Renombrado de
ficheros y

Commits
Atmicos

Tabla Comparativa de Opciones

No
Si
Si
Si
Si

No
Si
Parcial
Si
Si

No
No
Si
Si
Si

No
No
Si
Si
Si

Parcial
No
Si
Si
Si

Si
Si
Si
Si
Si

No
Si
Parcial
Si
Si

No
Si
Parcial
Si
Si

Parcial

Si

Si

No

Si

Si

Si

Si

Si

Si

Si

Si

Si

Si

Si

No

commit

revert

merge

copy

move

remove

add

lock

Push

update

pull

checkout

clone

CVS
SVN
GIT
Bazzar
TeamFo
undatio
n
Rational
ClearCa
se
Mercuri
al

branch

Herrami
enta

init

Tabla comparativa Comandos bsicos

BIBLIOGRAFA
https://es.wikipedia.org/wiki/CVS
https://www-112.ibm.com/software/howtobuy/buyingtools/paexpress/Express?
P0=E1&part_number=D5315LL,D0BH1LL,D0BH2LL&catalogLocale=es_ES&Lo
cale=null&country=ESP&PT=html&S_TACT=none&S_CMP=none&brand=rat
https://www.visualstudio.com/products/how-to-buy-vs
https://es.wikipedia.org/wiki/Bazaar_(software)
https://es.wikipedia.org/wiki/Git
http://web.usbmed.edu.co/usbmed/fing/v3n1/v3n1a9.pdf
https://es.wikipedia.org/wiki/Microsoft_Visual_SourceSafe
http://www.aeipro.com/files/congresos/2011huesca/CIIP11_2390_2405.3423.pd
f
https://en.wikipedia.org/wiki/Team_Foundation_Server
https://es.wikipedia.org/wiki/Control_de_versiones
https://es.wikipedia.org/wiki/Mercurial
https://en.wikipedia.org/wiki/Comparison_of_version_control_software
http://tratandodeentenderlo.blogspot.pe/2009/12/control-de-versiones-conclearcase.html
http://www-03.ibm.com/software/products/es/clearcase
https://portfoliogabrielfcr.wordpress.com/2013/10/25/62/