viernes, 12 de marzo de 2010

VCS centralizados vs VCS distribuidos

Hola a todos!!!!!

Hoy vamos a hablar sobre los sistemas de control de versiones (VCS) haciendo una comparación entre los centralizados y los distribuidos. Pero primero, ¿que son y para que se usan estos sistemas de control de versiones?
Una definición sencilla de los VCS sería que estos sistemas nos facilita la administración de las distintas versiones de cada uno de nuestros proyectos, así nos ayudará a tener un control sobre los distintos cambios que hagamos sobre nuestros fuentes. Estos VCS son especialmente útiles cuando sobre un mismo proyecto trabajan varias personas o una comunidad entera, los VCS se encargarán de la coordinación de las distintas personas que están realizando cambios en el proyecto para que todos puedan trabajar sobre la misma base de código.
Una vez visto que son los VCS, vamos a ver que son los VCS centralizados y los VCS distribuidos.

Sistemas de control de versiones CENTRALIZADOS:

Estos sistemas centralizados se caracterizan porque todos las fuentes y las versiones del proyecto están almacenados en un único directorio (repositorio de fuentes) de un servidor. Esto supone que todos los desarrolladores que quieran trabajar sobre el proyecto, deberán pedirle al CVS una copia para trabajar sobre ella. En esta copia, el desarrollador hará todos los cambios que crea oportunos y cuando haya terminado y crea que todo esta en perfecto estado, subirá al repositorio los fuentes modificados como una nueva versión.
Una vez que esa nueva versión este subida en el repositorio, los demás desarrolladores podrán tomar esa nueva versión. Pero hay que tener en cuenta, que no es obligatorio bajarse esta nueva versión, ya que, si por algún motivo no se fían de esa nueva versión o no quieren bajársela por algún otro motivo, podrán tomar otra versión distinta. En este ejemplo vemos, que para que los desarrolladores puedan intercambiarse fuentes entre ellos, es necesario primero pasar por el repositorio.
Algunos de los VCS centralizados más importantes son Subversion y CVS.


Sistemas de control de versiones DISTRIBUIDOS:

Estos sistemas distribuidos se caracterizan porque no hay un repositorio central. Todos los desarrolladores tienen su propia copia del repositorio, con todas la versiones hasta ese momento. Como cada desarrollador tiene su propia copia, las copias se irán distanciando unas de otras, así podemos decir que habrá varias ramas del mismo proyecto. Por supuesto, puede llegar un momento en el que dos desarrolladores quieran compartir sus copias entre sí y para hacer esto le pedirán al VCS que sincronice sus dos copias, así el VCS se encargará de administrar los distintos cambios que han hecho los dos desarrolladores y crear una nueva copia con los cambios realizados por cada desarrollador.

En un sistema de control de versiones distribuido lo normal es decidir algún sitio donde esté un repositorio de fuentes que se considera oficial, de forma que ahí es de dónde los nuevos desarrolladores cogen su primera copia del proyecto y donde los desarrolladores van dejando las modificaciones validadas y aprobadas.

Una de las grandes ventajas de estos tipos de sistemas, es que el desarrollador puede trabajar offline, ya que, no es necesario como ocurría con los sistemas centralizados, que cada nueva versión que realice la tenga que subir al repositorio central.

Algunos de los VCS distribuidos más importantes son Bazaar, Git y Mercurial.

Y esto es todo por hoy amigos!!!!!

1 comentario: