Git es uno de los sistemas de control de versiones más populares entre los desarrolladores. Y parte culpa de su popularidad la tiene GitHub, un excelente servicio de alojamiento de repositorios de software con este sistema, que lejos de quedarse en esta funcionalidad, ofrece hoy en día un conjunto de características muy útiles para el trabajo en equipo.
No en vano, es el servicio elegido por proyectos de software libre como jQuery, reddit, Sparkle, curl, Ruby on Rails, node.js, ClickToFlash, Erlang/OTP, CakePHP, Redis, y otros muchos. Además, algunas de las grandes empresas de Internet, como Facebook, alojan ahí sus desarrollos públicos, tales como el SDK, librerías, ejemplos, etc.
Nosotros no queríamos ser menos, y hemos creado una cuenta de GitHub para GenbetaDev donde publicar ocasionalmente el código que utilicemos para ciertos artículos. Aunque no busquéis mucho en ella por ahora que de momento está vacía.
Y ahora paso a hablaros un poco de qué es GitHub y cuáles son las ventajas evidentes de utilizar un servicio como éste.
Ventajas de hospedar el código en GitHub
Aunque Git es un sistema descentralizado (no necesita de un servidor donde subir los cambios, sino que los desarrolladores pueden enviarse los mismos los unos a los otros desde sus equipos), es muy habitual encontrarnos con que un equipo de trabajo funciona mejor disponiendo de uno, ya que así evitamos tener que descargar los cambios de cada ordenador perteneciente a un miembro del equipo de manera individual, debiendo éste permanecer encendido para poder efectuar esas operaciones. De modo que una de las ventajas evidentes de GitHub, y que fue el servicio casi único con el que nació, es alojar el repositorio de código en el que trabaja todo el equipo.
Al alojar el código, podemos decidir si éste será público o su visibilidad estará limitada a unos usuarios determinados, que son los únicos que tendrán permiso para acceder al mismo y subir cambios.
Pero además de servir de alojamiento para el código, GitHub posee un estupendo visor de código mediante el cual, a través del navegador, podremos consultar en un instante el contenido de un determinado fichero, con su resaltado de sintaxis correspondiente para el lenguaje en el que esté escrito (ejemplo). Este navegador es realmente rápido, y gracias a él podremos hacer pequeñas consultas o copiar porciones de código que nos puedan hacer falta en un momento determinado sin necesidad de bajarse todo el repositorio. Por supuesto, se puede navegar por cualquiera de las versiones del mismo, de modo que podemos ver el contenido de un fichero antes de que se dieran varias actualizaciones de cambios. Seleccionar un determinado commit, tag o rama es cuestión de pocos clicks.
Características de GitHub útiles para el trabajo en equipo
Pero hoy en día GitHub es mucho más que un servicio de alojamiento de código. Además de éste, se ofrecen varias pequeñas herramientas en línea muy útiles para el trabajo en equipo. Entre ellas, caben destacar:
-
Un wiki que funciona con gollum, el cual opera con Git para el mantenimiento de las distintas versiones de las páginas.
-
Un sistema de seguimiento de problemas, que al estilo del clásico sistema de tickets, permiten a los miembros de tu equipo (o a cualquier usuario de GitHub si tu repositorio es público) abrir un ticket detallando un problema que tenga con tu software o una sugerencia que desee hacer al mismo.
-
Una herramienta de revisión de código, donde se pueden añadir anotaciones en cualquier punto de un fichero (ej: "Esto es mejor que lo extraigamos a una nueva clase"), y debatir sobre determinados cambios realizados en un commit específico.
-
Un visor de ramas donde se pueden comparar los progresos realizados en las distintas ramas de nuestro repositorio.
Funciones de revisión de cambios en el código
Además de poder trabajar con tu equipo en el software que estéis construyendo, puedes contribuir a mejorar el software de los demás. Para poder alcanzar esta meta, Github provee de funcionalidades para hacer fork y solicitar pulls. Funcionan del siguiente modo: Imagina que se te ha ocurrido una funcionalidad, mejora o corrección de un bug de un software que no es tuyo, pero que está alojado en GitHub. Puedes clonar el repositorio ajeno (hacer un fork) para que se copie a tu cuenta, efectuar en esta copia los cambios que necesites, y finalizar emitiendo una solicitud de pull al dueño del repositorio original. Éste podrá analizar los cambios que has realizado fácilmente, y si considera interesante tu contribución, hacer un merge de los mismos con el repositorio original en pocos clicks. Y sin que se pierda la autoría de tus commits.
Dado que la operación de fork es tan sencilla, hay veces que, por dejadez o falta de tiempo u otros motivos, algunos de estos forks están más avanzados y estables que los repositorios originales. Así que no está de más echar un vistazo a todos los forks de un determinado software alojado en GitHub, utilizando la herramienta de visor gráfico de la red de versiones de un repositorio (ejemplo).
Precio
GitHub es totalmente gratuito para alojar código open source, siendo estos repositorios de visibilidad pública forzosamente. Sin embargo, su plan de precios para los repositorios privados y con colaboradores externos es más que razonable, abarcando desde 5 repositorios privados y hasta un colaborador por 7 dólares al mes, hasta 125 repositorios privados y equipos de personas ilimitados por 200 dólares al mes.
Más información | GitHub, Cuenta en GitHub de GenbetaDev