Práctica 4.5: Git/Github Pull Request (PR)
Relación 4.1.5: Contribuir a repositorios de terceros con pull-request, integración automática, y comandos Git: branch, clone, fetch, merge, pull y push: Pull Request¶
Objetivos¶
- Usar dos repositorios remotos, uno como respaldo del repositorio de trabajo local y otro como repositorio central donde las contribuciones se envían con pull-request.
- Practicar con ramas remotas de diversos tipos
- Realizar integraciones de desarrollos sencillos.
Descripción de la práctica¶
En esta práctica vamos a duplicar el repositorio https://github.com/ging-moocs/MOOC_git_mod7-cal_2com en nuestra cuenta de GitHub, de nuevo usando el botón de "Fork". Este repositorio tiene 2 commits en la rama master. El primer commit añade los ficheros README.md y LICENSE, y el segundo commit añade el fichero calculator.html con una calculadora que tiene solo el botón x^2.
Primero vamos a crear una organización o una segunda cuenta con un nombre diferente (
Luego clonamos el repositorio "MOOC_git_mod7-cal_2com" de
Copiamos la rama "inverse" del repositorio https://github.com/ging-moocs/https://github.com/ging-moocs/MOOC_git_mod7-cal_branches a nuestro repositorio local. Esta rama tiene 3 commits, el primero y el segundo son los mismos que los dos primeros de la rama master de "cal_2com" y el tercero añade el botón 1/x a la calculadora.
Integramos primero la rama master en la rama inverse. La integración debe incorporar el título <h1> de la rama master y los dos los botones x^2 y 1/x de la rama inverse.
Integramos a continuación también la rama inverse en la rama master (con FF)y subimos ambas ramas al repositorio origen de la clonación en la segunda cuenta.
Una vez subidas envíe la integración realizada en la rama master con pull-request desde este repositorio al repositorio en la primera cuenta, del que copiamos este Fork. Aceptamos el pull-request y lo integramos en el repositorio en GitHub en la primera cuenta.
Tareas a realizar¶
Paso 1: Copiar repositorio¶
Primero vamos a copiar el repositorio https://github.com/ging-moocs/MOOC_git_mod7-cal_2com en su cuenta de GitHub usando el botón de Fork.
Paso 2: Copiar repositorio desde una segunda cuenta¶
A continuación, creamos una segunda cuenta (
Paso 3: Clonar el repositorio¶
Clonamos el repositorio
Paso 4: Añadir cambios¶
Entramos en el directorio de trabajo del nuevo repositorio clonado y añadir al fichero calculator.html, al principio del bloque <body> de HTML, un título <h1> con su nombre y apellidos.
Creamos un nuevo commit "Título con autor" con esta modificación.Paso 5: Copiar rama remota¶
Copiamos la rama remota inverse del repositorio https://github.com/ging-moocs/MOOC_git_mod7-cal_branches como una rama local con git fetch y la refspec correspondiente utilizando el comando: git fetch ..…
Podemos comprobar que la rama "inverse" está disponible en local con el comando siguiente:Paso 6: Integrar la rama "inverse" en "master"¶
A continuación vamos a integrar en la rama "inverse", copiada en el repositorio local, la rama "master" con (git merge) e identificamos el nuevo commit con el mensaje "Integrar inverse y master".
Primero nos cambiamos a la rama "inverse"
A continuación integramos la rama "master" en "inverse"
Al hacer la integración surgirán conflictos que debemos resolver manualmente con el editor de texto. La integración debe incorporar el título y los dos botones x^2 y 1/x. Una vez resueltos los conflictos añadimos los ficheros modificados al commit y continuamos con el proceso de integración
Podemos comprobar el grafo de commits con el siguiente comando:
Paso 8: Integrar "inverse" en "master"¶
Integramos en "master" la rama "inverse" del repositorio local (integrada en el paso anterior) con git merge también. Primero tenemos que cambiarnos a la rama "master".
Paso 8: Subir los cambios a Github¶
Subimos al repositorio origin (origen de la clonación en la segunda cuenta) las dos ramas locales ("master" e "inverse") con git push.
Paso 9: Crear Pull Request¶
A continuación, enviamos un Pull Request de la rama master desde el repositorio MOOC_git_mod7-cal_2com de la segunda cuenta al repositorio MOOC_git_mod7-cal_2com de la primera cuenta.
Se deben utilizar las facilidades de GitHub para enviar un Pull Request, porque es la única forma de hacerlo.
Paso 10: Aceptar Pull Request¶
Por último, aceptamo el Pull Request desde la primera cuenta. Github permite aceptar el merge asociado a un Pull Request directamente en Github.
También se puede clonar el repositorio de la primera cuenta en local. Descargar la rama master asociada al pull-request con "git fetch …" e integrarla en la rama master del repositorio local. Volver a subir la rama master ya integrada al repositorio en la primera cuenta.
Utilizar los comandos ya vistos en los pasos anteriores y en las transparencias.
Entrega¶
- Añade la URL de los repositorios a la tarea.
- Recuerda que el repositorio tiene que ser publico.
-
El nombre del repositorio sera: ID_XXXX_my_calculator y ID_XXXX_my_calculator_2 donde
- ID es el identificador de la tarea
- XXXX tus iniciales
-
Asegurate que funciona y:
- 10%: Existe el repositorio "MOOC_git_mod7-cal_2com" en cuenta 2
- 10%: Existe el repositorio "MOOC_git_mod7-cal_2com" en cuenta 1 y es el origen del Fork del repo de cuenta 2
- 10%: La rama master del repo de cuenta 2 tiene como tercer commit "Título con autor"
- 10%: El repo de cuenta 2 tiene una rama inverse integrada con master
- 10%: La rama master del repo de cuenta 2 tiene como último commit "1/x button"
- 20%: Que el fichero calculator.html de este último commit funciona, tiene el título requerido y los botones x^2 y 1/x
- 30%: Que el repositorio MOOC_git_mod7-cal_2com en cuenta_1 tiene una rama master con los mismos commits de master del repo MOOC_git_mod7-cal_2com de cuenta 2
Apoyo¶
- https://revilofe.github.io
Fuente¶
Juan Quemada, DIT - UPM