Las solicitudes de extracción son una característica de los servicios de git en línea como Github y Gitlab. Posibilitan que cualquier persona solicite que se agreguen cambios, inclusive si no disponen acceso al repositorio. Analizaremos cómo funcionan y cómo usarlos para la colaboración open source.
¿Qué hace una solicitud de extracción?
Pese a lo que pueda parecer, git
como herramienta es un sistema totalmente descentralizado. Lo que eso significa es que el repositorio en Github.com y el repositorio en su máquina local no son diferentes entre sí. No estas conectando para Github para trabajar en un repositorio, estás copiando el código de Github en su repositorio local y trabajando en él allí.
Cuando desee impulsar cambios, puede realizar confirmaciones y ejecutar git push
, enviando sus actualizaciones a un «remoto» dado, que puede ser cualquier otro repositorio de Git, pero de forma general es un servicio alojado en línea como Github, Bitbucket o Gitlab. Esto actualiza el repositorio remoto para que esté sincronizado con su repositorio.
A pesar de esto, esto solo funciona cuando tienes permiso para enviar confirmaciones, de forma general configuradas con una contraseña o clave SSH. Esto solo se da a los miembros de la organización que controlan el repositorio; caso contrario, todos podrían alterar el historial de Git. Si no es miembro de la organización, ¿qué debe hacer cuando desee realizar cambios?
Bueno, hay una segunda forma de actualizar un repositorio de Git:git pull
. Probablemente haga esto a menudo cada vez que sus compañeros de trabajo realizan cambios que se presionan. En ese caso, está bajando las confirmaciones del repositorio remoto y sincronizándolas con su repositorio local.
Pero, Git está descentralizado, por lo que verdaderamente no hay diferencia entre su repositorio y el repositorio remoto. Verdaderamente puedes correr git pull
a la inversa, desde el servidor, y este es el corazón de lo que hace que funcionen las solicitudes de extracción.
Una solicitud de extracción es solo para que le digas al servidor remoto (y a las personas que lo mantienen) que tienes algunas confirmaciones actualizadas que te interesaría que revisaran e integraran con el repositorio remoto. Si aceptan los cambios, el repositorio remoto se ejecutará git pull
contra su repositorio local, integrando el código sin tener que tener una clave SSH autorizada para hacerlo.
La columna vertebral de la colaboración open source
Las solicitudes de extracción se usan constantemente para las bibliotecas open source. Después de todo, gran parte de el motivo del código abierto es que cualquier desarrollador puede contribuir al proyecto si su código es útil.
Las solicitudes de extracción son las que hacen que eso funcione. Los encargados del mantenimiento del proyecto, los administradores que lo controlan, son los que regularmente revisan las solicitudes de extracción y deciden si integrar o no el código, o si es necesario corregir ciertos errores antes de que esté listo.
Las solicitudes de extracción no son exactamente una característica de git
en sí, por lo que la implementación exacta de los mismos variará según el servicio. Pero, para Github, encontrará solicitudes de extracción en la barra de menú de un repositorio, que muestra una lista de solicitudes abiertas y cerradas por las que puede filtrar.
Si hace clic en cualquiera de ellos, puede ver los comentarios realizados por el solicitante, así como las confirmaciones asociadas a él.
Si es el responsable de mantenimiento del repositorio, puede revisar y fusionar la solicitud. O, si tiene problemas con él que necesita discutir, puede dejar un comentario y trabajar juntos en el código. Esta es una gran razón por la que los espacios públicos como Github son excelentes para la colaboración open source, inclusive algo tan simple como cambiar la redacción de la documentación puede ser realizado de manera colaborativa por cualquier persona.
Las solicitudes de extracción son diferentes de los problemas. El seguimiento de problemas es una característica de muchos servicios como Github que posibilita una fácil corrección de errores y colaboración pública para nuevas características. Esencialmente, cada tema tiene un tema que pueden discutir los mantenedores y la comunidad. A modo de ejemplo, dotnet/csharplang
es el repositorio oficial para la discusión acerca de cómo se diseña C # como lenguaje de programación. Si va a los temas, encontrará muchas personas discutiendo conceptos para futuras iteraciones del lenguaje:
No todos los problemas conducen a solicitudes de extracción. Si el responsable del mantenimiento soluciona el problema, no importará. Si un colaborador soluciona el problema, deberá enviar una solicitud de extracción.
Todas las solicitudes de extracción se rechazan o conducen de forma directa a cambios de código en el repositorio. Los problemas son solo una forma de realizar un seguimiento del progreso del desarrollo y qué errores deben corregirse.
Realización de solicitudes de extracción
Nuevamente, los pasos exactos para esto variarán según el servicio que esté usando, pero la mayoría de las colaboraciones open source ocurren en Github, por lo que mostraremos los pasos para eso.
Dirígete al repositorio para el que deseas realizar una solicitud y haz un clic en «Nueva solicitud de extracción» en la pestaña Solicitudes de extracción:
Tienes dos opciones aquí. Si es miembro del repositorio y desea fusionar su rama de características en la rama maestra, puede elegir las dos ramas.
Si está trabajando en un repositorio open source, deberá bifurcar el repositorio y enviarlo a Github con su propia cuenta. Después, puede elegir «comparar entre bifurcaciones» para fusionar su rama maestra en su rama maestra.
Una vez realizado esto, la solicitud de extracción estará abierta para discusión, y simplemente tendrá que esperar para recibir noticias de los mantenedores.
Mientras tanto, puede verificar el estado de todas las solicitudes de extracción en las que está involucrado con la pestaña «Solicitudes de extracción» en la barra de encabezado principal.