Sistema de Control de Versiones - Git y Github

Un Sistema de Control de Versiones (VCS, Version Control System), es un software para la gestión de los diversos cambios que se realizan sobre los elementos de algún proyecto.



Mucho antes de la creación de este tipo de software, los desarrolladores usaban un método poco práctico y que no tenia muchos beneficios, pues traía una serie de problemas a lo largo del desarrollo de un proyecto.

Aquí un ejemplo de como se desarrollaba antes de la existencia de un sistema de control de versiones.


Algunos de los problemas que traía este método de trabajo, era al momento de realizar cambios en el proyecto o realizar actualizaciones o cuando se quería agregar una nueva funcionalidad. Pues no se sabia donde se hacia el cambio ni quien lo hacia.

También ocurría confusiones cuando en el proyecto se trabajaba con mas de una persona, la comunicación a cerca del software era escasa.

Con todo esto se fue creando software's que puedan dar solucionar este tipo de problemas y desde 1972 con la creación de SCCS (Source Code Control System), se dio inicio a software's cuya función era el control de versiones de un proyecto.

He aquí un lista con algunos Sistemas de Control de Versiones a lo largo del tiempo:

  • 1972 Source Code Control System (SCCS) de código cerrado.
  • 1982 Revision Control System (RCS), multiplataforma, open source. Mas funcionalidades y mas rápido, pero solo trabajaba con un archivo a la vez.
  • 1986 Concurrent Version System (CVS), open source y múltiples usuarios podían trabajar en un mismo archivo.
  • 2000 Apache Subversion, snapshot de un directorio, commits transaccionales y mas rápido.
  • 2000 Bitkeeper SCM, Código cerrado, propietario. Control de versiones distribuido. Versión gratis para la comunidad, usado por el proyecto del kernel de Linux en 2002 – 2005. en abril del 2005 la versión para la comunidad deja de ser libre.
  • 2005 Git, basado en Bitkeeper y Monotone, creado por Linus Torvalds, mas eficiente, veloz, confiable, varios archivos a la vez, multiples usuarios, etc.
Ahora, los Sistemas de Control de Versiones se dividen en dos grupos, los centralizados y los distribuidos. Veamos la diferencia entre ambos.

Los Sistemas de Control de Versiones Centralizados como CVS, Subversion, Perforce, etc. 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.

En cambio los Sistemas de Control de Versiones Distribuidos como Git, Mercurial, Bitkeeper, etc. 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.

Ya que sabemos un poco mas acerca de los Sistemas de Control de Versiones, veamos que ventajas traen consigo al usarlas.

  • Permite el trabajo grupal o solo en un proyecto.
  • Almacenamiento y backups.
  • Deshacer cambios ilimitadamente.
  • Control de acceso mediante permisos.
  • Diferentes colaboradores.
  • Sincronización fácil.
  • Historial de cambios (Quien, Que, Cuando, Para que).

GIT (ver)
Ahora que ya tenemos entendido que es un Sistema de Control de Versiones, hablemos sobre GIT.
Git es un sistema de control de versiones distribuido de código abierto diseñado para ser rápido y eficiente.

Algunos proyectos que usan Git, entre ellos tenemos:

  • Android.
  • Fedora.
  • Eclipse.
  • CakePHP.
  • Gnome.
  • OpenSUSE.
  • PostgreSQL.
  • Ruby On Rails.
  • VLC.
A continuación algunas ventajas que trae el uso de Git.

  • Cada usuario tiene backup completo del proyecto.
  • Eficiente, muy cómodo para trabajar con ramas.
  • Distribuido.
  • Potente.
  • Se puede trabajar offline.
  • Rápido.
  • Seguro.
Pero también trae desventajas, aunque son solo dos, veamos cuales son:
  • Git se usa por medio de la terminal (Mac, Linux), o el símbolo de sistema (Windows). Generalmente causa mas problemas en los usuarios que usan el sistema operativo de Microsoft, pero esto se puede solucionar gracias a clientes GUI de Git (ver clientes aquí).
  • La otra desventaja es que Git trae consigo 127 comandos para su uso, cada uno con diferente función, el problema que trae esto es que es difícil aprenderlos todos.


GITHUB (ver)
Es un servicio de hospedaje web para proyectos que utilizan el sistema de control de versiones Git, ofrece planes comerciales como planes gratuitos para proyectos de código abierto.

También es llamado la red social de los desarrolladores/programadores, podemos encontrar muchos proyectos interesantes en este sitio.

Actualmente también es muy importante como parte del Curriculum Vitae, ya que para presentarse a empresas como programadores, nos servirá como muestra del trabajo que hacemos o hemos hecho, aportes a la comunidad con algún plugin, aportes a proyectos opensource, etc.

En conclusión, el manejo de un Sistema de Control de Versiones en nuestros proyectos es muy importante ya que mejora la comunicación entre los miembros del proyecto y facilita el desarrollo.

Te puede interesar

0 comentarios