Cómo contribuir con tu código en proyectos Open Source. Realizar la operativa de Pull Request al repositorio de código de un proyecto publicado en GitHub.
En este artículo te vamos a explicar el mecanismo para contribuir en un proyecto Open Source que está publicado en GitHub, enviando código para la inclusión en el repositorio mediante el mecanismo conocido como Pull Request.
Es un proceso bastante sencillo, pero incluye varios pasos, comandos de consola, etc. Los describiremos, así como algunos de los conceptos que debes conocer para poder entender los procedimientos de Git para la gestión del código.
Al final del artículo además encontrarás un vídeo donde se demuestra todo este proceso, en vivo, paso por paso.
Nota: Pull Request es la acción básica con la que podrás aportar código para un proyecto. Recuerda además que GitHub es un escaparate excelente para un programador, pues es el mejor sitio donde se puede demostrar los conocimientos, compartiendo código de calidad y contribuyendo activamente a proyectos Open Source. Si quieres aprender a usar Git desde un punto de vista muy práctico infórmate de nuestro curso de Git que comienza esta semana.
Fork de un proyecto
Como sabes, en Git se trabaja siempre en local, con la copia del repositorio en nuestro ordenador. Fíjate que el repositorio que tienes en local no debe ser un clon de aquel con el que deseas contribuir, sino un fork propio.
Puedes hacer un Fork desde la propia página de GitHub, entrando en un repositorio y pulsando el botón "Fork", arriba a la derecha. Inmediatamente se creará en tu cuenta de GitHub un nuevo repositorio, el fork, que es la copia de estado actual del repositorio original. Podrás ver la información del repositorio, identificando que es un fork, en un área arriba de la página.
En tu fork se supone que habrás realizado diversos cambios en el código, en uno o más ficheros. Tendrás entonces que hacer el commit para enviarlos a tu copia del repositorio en local.
Nota: Ya debes conocer la operación commit, si no, mira en el artículo Primer commit del Manual de Git.
Luego tendrás que enviar esos cambios a tu propio repositorio, el fork, publicado en GitHub. Eso lo consigues con el comando git push, indicando el repo al que quieres enviar los cambios y la rama donde enviarlos.
git push origin master
Con ese comando estás diciendo a Git: "haz un push a origin, que es el origen del repositorio en el servidor remoto (GitHub), especificando la rama master".
Esto conectará por Git para subir aquellos cambios que acabas de realizar y podrás verlos en GitHub en tu propio Fork.
Hacer el Pull Request
El siguiente paso, una vez subido el commit, es realizar el Pull Request. En tu fork observarás un icono en verde que sirve para comparar y revisar para crear un Pull Request.
Hacemos clic sobre ese botón y accedemos a una página donde está realizando la comparación contra el repositorio original. Te aparecerá un detalle de todos los archivos que se han cambiado con los cambios coloreados para que los puedas entender mejor, junto con un informe del número de commit realizados y los colaboradores que los han enviado.
Luego puedes hacer clic sobre el icono "Create pull request" para lanzar la solicitud de fusión de nuestro fork con el repositorio original.
Aparecemos entonces en una página donde encontramos un formulario que nos permite indicar un mensaje sobre los motivos por los que quieres hacer el pull request y que comentes el detalle de los cambios que has realizado, qué funcionalidad has agregado, que bug se ha solucionado, etc.
Nota: si en el proyecto donde estás haciendo un pull request tienen el CONTRIBUTING.md te saldrá un enlace para conocer las políticas necesarias a seguir para poder hacer aportaciones al código. "Guidelines for contributing". Puedes ver ese enlace en la imagen anterior.
Una vez enviado el formulario con las notas del pull request, que deben servir a los dueños del repositorio original para entender tu código y valorar la posibilidad de aceptar la contribución. Al enviar el formulario nos redirije a la página del pull request, dentro del repositorio original, donde encontrarás que tu usuario de GitHub ha solicitado un merge al proyecto, junto con una serie de informaciones relacionadas, el repositorio original, el fork que ha pedido el pull request, etc. En esa página no puedes hacer nada más, salvo realizar alguna comunicación con los administradores del repositorio original, simplemente enviando algún mensaje.
De manera automática, a los administradores les llegará un correo y una notificación a través del sitio de GitHub para que revisen el pull request y acepten o no los cambios al código. Si además entras en la home del repositorio verás que en la parte de la derecha aparece el número de pull request, donde debería haber al menos uno, el que acabas de hacer.
Pull Request aceptado
En el caso que los administradores acepten el pull request que acabas de realizar, recibirás las correspondientes notificaciones. Si ha sido aceptado el Pull Request se fusionará el código de tu propio fork con el proyecto al que estés contribuyendo.
En la parte de la derecha observarás que el pull request ya no está, pero si pulsas sobre el enlace "Pull request" encontrarás un histórico de las operaciones realizadas.
Si vas a los pull request cerrados (closed) encontrarás un listado de la actividad. Deberías localizar el tuyo y un enlace que nos lleva a una página con algunas informaciones útiles del pull request cerrado.
El estado de tu Pull Request observarás que está en "Merged" y que el proceso está completado. Desde allí podrás comunicar nuevamente con los gestores del repo original, enviando si lo deseas mensajes.
Con esta serie de pasos hemos aprendido a realizar una operación de Pull Request, aportando código en un repositorio Open Source. Esperamos que puedas poner en práctica esta actividad que sin duda resultará enriquecedora tanto para el software libre como para tu propio perfil de GitHub y tu formación profesional.
En el vídeo que puedes ver a continuación encontrarás todo este proceso paso por paso, relatado en mayor detalle. Recuerda además que esta es una de las muchas cosas que vas a aprender y practicar en el próximo Curso de Git Práctico para desarrolladores y diseñadores.