miércoles, 23 de julio de 2014

Control de versiones: Tipos de sistemas de control

Terminología:
Repositorio: es el lugar en el que se almacenan los datos actualizados e históricos de cambios, a menudo en un servidor. Puede ser un sistema de archivos en un disco duro, un banco de datos, etc..

Los  Tipos de sistemas de control de versiones  se pueden clasificar por la arquitectura del almacenamiento 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 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. Los distintos repositorios pueden intercambiar y mezclar revisiones entre ellos. Es frecuente el uso de un repositorio, que está normalmente disponible, que sirve de punto de sincronización de los distintos repositorios locales. Ejemplos: Git y Mercurial.


Ventajas de los Sistemas Distribuidos:

Necesita menos veces estar conectado a la red para hacer operaciones. Esto produce una mayor autonomía y una mayor rapidez.

Aunque se caiga el repositorio remoto la gente puede seguir trabajando

Al hacer los distintos repositorios una réplica local de la información de los repositorios remotos a los que se conectan, la información está muy replicada y por tanto el sistema tiene menos problemas en recuperarse si por ejemplo se quema la máquina que tiene el repositorio remoto. Por tanto hay menos necesidad de backups. Sin embargo los backups siguen siendo necesarios para resolver situaciones en las que cierta información todavía no haya sido replicada.

Permite mantener repositorios centrales más limpios en el sentido de que un usuario puede decidir que ciertos cambios realizados por él en el repositorio local, no son relevantes para el resto de usuarios y por tanto no permite que esa información sea accesible de forma pública. Por ejemplo es muy útil se pueden tener versiones inestables o en proceso de codificación o también tags propios del usuario.

El servidor remoto requiere menos recursos que los que necesitaría un servidor centralizado ya que gran parte del trabajo lo realizan los repositorios locales.

Al ser los sistemas distribuidos más recientes que los sistemas centralizados, y al tener más flexibilidad por tener un repositorio local y otro/s remotos, estos sistemas han sido diseñados para hacer fácil el uso de ramas (creación, evolución y fusión) y poder aprovechar al máximo su potencial. Por ejemplo se pueden crear ramas en el repositorio remoto para corregir errores o crear funcionalidades nuevas. Pero también se pueden crear ramas en los repositorio locales para que los usuarios puedan hacer pruebas y dependiendo de los resultados fusionarlos con el desarrollo principal o no.

Ventajas de los sistemas Centralizados:

En los sistemas distribuidos hay menos control a la hora de trabajar en equipo ya que no se tiene una versión centralizada de todo lo que se está haciendo en el proyecto.

En los sistemas centralizados las versiones vienen identificadas por un número de versión. Sin embargo en los sistemas de control de versiones distribuidos no hay números de versión, ya que cada repositorio tendría sus propios números de revisión dependiendo de los cambios. En lugar de eso cada versión tiene un identificador al que se le puede asociar una etiqueta (tag).



8 comentarios:

  1. Un glosario bastante pobre y errado...pero por lo demas bien.

    ResponderEliminar
  2. Para tí ¿Cuál te parece mas interesante en una aplicación web, centralizado o distribuido? ¿Por qué?

    ResponderEliminar
    Respuestas
    1. El mejor sistema de control de versiones es el distribuido y para desarrollo web mas concretamente es el sistema git. Porque permite que trabajen varios desarrolladores a la vez sobre una o varias versiones, es mas eficiente tambien con respecto a las ramas, etc... sistema de control de versiones en aplicaciones web=git.

      Eliminar
  3. Está bien, pero se hace bastante denso.

    ResponderEliminar
  4. un poco largo pero bien no esta mal

    ResponderEliminar