CambioDigital-OL

0

GitHub: Más que control de versiones de Git en la nube

GitHubGitHub es, en esencia, un servicio de alojamiento de repositorios Git; es decir, una administración de código fuente o un sistema de control de versiones basado en la nube, pero eso es solo el comienzo. Además, GitHub implementa características para la revisión de código (solicitudes de extracción, diffs y solicitudes de revisión), administración de proyectos (incluyendo seguimiento y asignación de asuntos), integraciones con otras herramientas de desarrollador, administración de equipos, documentación y “codificación social”.

Algo así como una red social para programadores, GitHub es un entorno abierto donde los programadores pueden compartir y colaborar libremente (incluso ad hoc) en código fuente abierto. GitHub hace que sea más fácil encontrar código útil, copiar repositorios para uso propio y presentar cambios a los proyectos de otros. Como resultado, GitHub se ha convertido en el hogar de prácticamente todos los proyectos de código abierto.

Cada vez que quiero explorar un proyecto de código abierto, empiezo por buscar el nombre del proyecto. Una vez que encuentro el sitio web, busco el enlace del repositorio de código, y nueve de cada 10 veces termino en GitHub.

Control de versiones Git
Antes de poder entender qué hace y cómo funciona GitHub, debemos comprender lo que significa Git. Git es un sistema de control de versiones distribuidas, originalmente escrito por Linus Torvalds en 2005 para y con la ayuda de la comunidad kernel de Linux. No estoy aquí para publicitar Git, así que le ahorraré el chisme sobre lo rápido, pequeño, flexible y popular que es; pero debería saber que cuando clona un repositorio de Git (“repo”, para abreviar) obtiene el historial completo de la versión en su propia computadora, no solo una captura de una rama a la vez.

Git comenzó como una herramienta de línea de comandos, acorde con su origen en la comunidad kernel de Linux. Todavía puede usar la línea de comandos de Git, si lo desea, pero no es necesario. En lugar de eso, o además, puede usar el cliente gratuito de GitHub en Windows o Mac, o cualquiera de una serie de GUIs para Git, o un editor de código que se integra con Git. Todas estas opciones son inicialmente más fáciles de usar que la línea de comandos. La línea de comandos de Git viene preinstalada en la mayoría de los sistemas Mac y Linux, y es compatible con todas las operaciones; las GUIs generalmente soportan un subconjunto de operaciones Git utilizado frecuentemente.

Git se diferencia de los sistemas de control de versiones anteriores como Subversion, en que se distribuye en lugar de centralizarse. También es bastante rápido, especialmente debido a que la mayoría de las operaciones suceden en su repositorio local. Sin embargo, el uso de Git agrega un nivel de complejidad: la asignación de código a su repositorio local y el envío de sus confirmaciones a un repositorio remoto son pasos separados. Cuando los equipos se olvidan de esto (o no se les enseña), puede llevar a situaciones en las que desarrolladores diferentes trabajan con bases de código que han divergido.

Un repositorio remoto de Git puede estar en un servidor o en la máquina de otro desarrollador. Eso permite muchos flujos de trabajo posibles para los equipos. Un flujo de trabajo común implica el uso de un repositorio de servidor como “bendecido”, al que solo se confirma el código revisado y probado, a menudo a través de una solicitud de extracción emitida desde un repositorio de desarrollador.

Funcionalidad de GitHub
Ya habrá notado que GitHub es un servidor Git basado en la nube para alojamiento de código y codificación social, y que implementa funciones para la revisión de código (solicitudes de extracción, diffs y solicitudes de revisión), administración de proyectos (incluido el seguimiento y la asignación de asuntos), integraciones con otras herramientas de desarrollador, administración de equipos y documentación.

La última innovación en la codificación social de GitHub es “commit co-authors”, que se logra al agregar uno o más trailersde “co-authored-by” al final de un mensaje de confirmación. Este mecanismo no afecta el núcleo del repo per se, y no cambia la apariencia del repo en Git simple, pero en GitHub el cromo mostrará múltiples committers en la lista de commits, y dará crédito a cada coautor en su gráfico de contribución.

Si desea, puede extender GitHub utilizando la API GitHub GraphQL. Esta es una mejora significativa sobre la API anterior de GitHub, basada en llamadas REST.

GitHub Enterprise
GitHub.com es un servicio de alojamiento en la nube que puede manejar una gama de tipos de cuenta: cuentas de desarrollador gratuitas (solo repos públicos) y pagadas (siete dólares al mes), equipos (nueve dólares por usuario al mes) y empresas (21 dólares por usuario al mes). Si desea ejecutar GitHub Enterprise en sus instalaciones o en su propia instancia en la nube en AWS, Microsoft Azure, Google Cloud Platform o IBM Cloud, puede hacerlo por el mismo precio que una cuenta de negocios alojada: 21 dólares. GitHub Enterprise agrega algunas características útiles, como la mensajería integrada en la aplicación para los usuarios y el aprovisionamiento de acceso integrado con los directorios LDAP, pero renuncia a la disponibilidad del 99.95% del SLA de GitHub.com para las cuentas de negocio alojadas.

GitHub vs. Bitbucket
GitHub no es el único servicio alojado mejorado de Git, y GitHub Enterprise no es el único producto local para empresas. Atlassian Bitbucket compite con ambos, con precios ligeramente más bajos y con una versión gratuita para equipo de cinco miembros que incluye repositorios privados ilimitados y el uso de Bitbucket Pipelines para una integración continua. GitHub es un sitio más popular para proyectos de código abierto y tiene un grupo mucho más grande de desarrolladores de código abierto. El precio de Bitbucket es más favorable para pequeños startups.

GitHub vs. GitLab
GitLab compite tanto con GitHub como con Bitbucket, alojados y en las instalaciones. Superficialmente, GitLab parece tener más funcionalidad de ciclo de vida que los demás, pero la diferencia con Atlassian desaparece casi por completo si incluye Jira cuando evalúa Bitbucket. GitLab ofrece funciones de la nube en planes Gold para proyectos de código abierto de forma gratuita, pero esa funcionalidad adicional en realidad no compensa a la comunidad de desarrolladores de código abierto más grande que tiene GitHub.

GitHub Desktop
GitHub Desktop, que se muestra a continuación, facilita la administración de los repositorios de GitHub.com y GitHub Enterprise. Si bien no implementa todas las funciones de la línea de comandos de Git y la GUI web de GitHub, sí implementa todas las operaciones que realizará a diario desde su escritorio mientras que contribuye a los proyectos. Por lo general, va a clonar repositorios de GitHub a GitHub Desktop, sincronizarlos según sea necesario, crear ramas para su trabajo, comprometer su trabajo y, en ocasiones, revertir uno o más compromisos.

Para trabajar con repos en los que no tiene privilegios de compromiso y colaboración, normalmente comienza bifurcando el repositorio en GitHub y clonándolo en su escritorio. Luego, agrega las ramas que necesita en GitHub Desktop, realiza los cambios que desee, prueba su trabajo, envía las confirmaciones a su repositorio bifurcado remoto y, finalmente, genera una solicitud de extracción para el proyecto principal.

Puede ver el botón Solicitud de extracción en la esquina superior derecha de la interfaz de GitHub Desktop. También puede ver muchas confirmaciones en el proyecto Neo4j que fueron fusiones de ramas o solicitudes de extracción. Eso es típico de los proyectos de código abierto con pocos committers y muchos colaboradores.

GitHub Desktop le brinda una GUI útil para agregar o clonar repositorios, navegar por las ramas, impulsar cambios y administrar las solicitudes de extracción.

GitHub Desktop le brinda una GUI útil para agregar o clonar repositorios, navegar por las ramas, impulsar cambios y administrar las solicitudes de extracción.

Editor Atom
Puede usar cualquier editor de programación que desee para editar el código, incluido el editor gratuito y hackeable de código abierto de GitHub, Atom, (mostrado a continuación), que se integra bien con GitHub y GitHub Desktop. Puede usar Atom en MacOS, Windows o Linux. Puede abrir Atom desde GitHub Desktop haciendo clic derecho en el repositorio que desea explorar o editar.

El editor Atom gratuito de código abierto de GitHub se integra con Git y GitHub. Puede ampliarlo para que admita idiomas o funciones adicionales a través de plug-ins.

El editor Atom gratuito de código abierto de GitHub se integra con Git y GitHub. Puede ampliarlo para que admita idiomas o funciones adicionales a través de plug-ins.

Atom se envía con aproximadamente 90 paquetes, cuatro temas de UI y ocho temas de sintaxis. Puede agregar cualquiera de los siete mil paquetes y dos mil temas a su instalación de Atom. Los paquetes pueden admitir lenguajes de programación específicos, como TypeScript; o agregar funcionalidad, como Hydrogen, un entorno de codificación interactivo que soporta Python, R, JavaScript y otros kernels de Jupyter.

Atom está construido con HTML, JavaScript, CSS e integración Node.js. Se ejecuta en Electron, un framework para crear aplicaciones multiplataforma utilizando tecnologías web. GitHub Desktop también se ejecuta en Electron.

Proyectos de GitHub
A menudo, los proyectos de software de código abierto necesitan formas para hacer cumplir el control de calidad mientras siguen aceptando contribuciones externas al equipo central de committers. La necesidad de contribuyentes es enorme, pero incorporar nuevos contribuyentes al proyecto mientras se mantiene la integridad de la base del código es una tarea difícil y potencialmente peligrosa. Al mismo tiempo, la necesidad de feedback de parte de los usuarios del proyecto también es grande.

GitHub cuenta con una serie de mecanismos que pueden ayudar a engrasar las ruedas de los proyectos de código abierto. Por ejemplo, los usuarios pueden agregar asuntos al proyecto en GitHub para reportar errores o solicitar funciones. Algunos otros sistemas les llaman boletos. Los administradores de proyectos que trabajan con asuntos pueden generar listas de tareas, asignar problemas a colaboradores específicos, mencionar a otros contribuyentes interesados para que se les notifiquen los cambios, agregar etiquetas y agregar hitos.

GitHub proporciona una cantidad de vistas útiles de su código, incluyendo un historial de commits (arriba) y una vista de diferencias (abajo).

GitHub proporciona una cantidad de vistas útiles de su código, incluyendo un historial de commits (arriba) y una vista de diferencias (abajo).

Para contribuir a un proyecto, básicamente se comienza desde una rama principal del tema que contiene los cambios confirmados que desea agregar a la rama base del proyecto, y se inicia una solicitud de extracción desde la rama principal, como se muestra a continuación. Luego, toma sus commits y los agrega a la rama del proyecto. Otros colaboradores pueden revisar los cambios propuestos, agregar comentarios de revisión, contribuir a la discusión de solicitud de extracción y agregar sus propios commits a la solicitud de extracción.

Una vez que todos los involucrados estén contentos con los cambios propuestos, un committerpuede fusionar la solicitud de extracción. La fusión puede conservar todos los commits, aplastar todos los cambios en una única confirmación, o volver a establecer la base de los commits de la rama principal en la rama base. Si la fusión genera conflictos, puede resolverlos en GitHub o utilizando la línea de comandos.

Las revisiones de código en GitHub permiten que un equipo distribuido colabore de forma asíncrona. Las herramientas útiles de GitHub para los revisores incluyen diffs (la mitad inferior de la captura de pantalla que se muestra), historia (la mitad superior) y blame view (una forma de ver la evolución de un archivo commit por commit). Las discusiones de código en GitHub se van a comentarios que se presentan en línea con los cambios de código. Si las herramientas integradas no son suficientes para su proyecto, puede agregar revisiones de códigos y herramientas de integración continua desde el mercado de GitHub. A menudo, los complementos son gratuitos para proyectos de código abierto.

Gists de GitHub
Gists son repositorios especiales de GitHub para compartir su trabajo (público) o para guardar trabajos para su posterior reutilización (secreto). Pueden contener archivos individuales, partes de archivos o aplicaciones completas. Puede descargar gists, clonarlas, bifurcarlas e incrustarlas.

Los gists públicos pueden ser descubiertos y encontrados en las búsquedas. Puede usar palabras clave para filtrar lo que encuentre, incluidos los prefijos para restringir los resultados a gists de usuarios específicos, gists con al menos N estrellas, o con nombres de archivo específicos, y así sucesivamente.

Los gists secretos no se pueden buscar, pero cualquiera con la URL puede verlos. Si realmente desea que su código esté protegido, use un repositorio privado.

Como hemos visto, GitHub proporciona repositorios Git como servicio, junto con funciones para revisión de código, gestión de proyectos, integraciones con otras herramientas de desarrollador, gestión de equipos, codificación social y documentación. A pesar de que GitHub no sea el único producto en su categoría, es el repositorio dominante para el desarrollo de software de código abierto.

Martin Heller, InfoWorld

Ordenado por: Software Tags: 

TOT

 

 

Contenidos recomendados...

Comparta esta publicación

Artículos relacionados

Escriba su comentario

Ud. tiene que estar conectado para publicar comentarios.

Red de publicaciones IDG en Latinoamérica: Computerworld Ecuador - Computerworld Colombia - CIO Perú // Contáctenos
© 6352 Computerworld Venezuela - All rights reserved ---- WordPress - Tema adaptado por GiorgioB