Una pull request en un servidor real
Un equipo guarda su código en un servidor como Gitea o GitHub. Nadie cambia la rama principal directamente. Subes una rama, abres una pull request y un compañero la lee antes.
En esta lección haces todo el recorrido en el Gitea del laboratorio, desde el push hasta la fusión.
Al terminar esta lección
Nota
Puedo subir una rama, abrir una pull request en un servidor y fusionarla.
Palabras clave
| Palabra | Qué significa |
|---|---|
| Pull request | una petición para fusionar una rama, con una página de revisión |
| API | una forma de que un programa pida algo a un servidor |
| Fusionable | que se fusiona sin ningún conflicto |
| Commit de fusión | un commit con dos padres que une dos ramas |
| Rama de seguimiento | la rama remota enlazada con tu rama |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
La rama debe estar antes en el servidor
Una pull request necesita que la rama exista en el servidor, así que la subes. Git no puede abrir la propuesta por ti.
Primero crea un repositorio en Gitea. Un programa puede hacerlo llamando a su API. La opción -u de git push enlaza tu rama con su gemela remota, la rama de seguimiento. La contraseña del laboratorio es pública, así que aquí puedes escribirla en una dirección. Nunca lo hagas con una contraseña real.
Crea un repositorio en Gitea
curl -s -o /dev/null -w '%{http_code}\n' -u student:student -H 'Content-Type: application/json' -d '{"name":"cafeteria-revision","auto_init":true,"default_branch":"main"}' http://gitea:3000/api/v1/user/reposSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Clónalo
git clone http://student:student@gitea:3000/student/cafeteria-revision.gitSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Empieza una rama para el cambio
git -C cafeteria-revision switch -c precio-teSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Añade una línea al README
printf 'El te cuesta 2 euros desde el lunes.\n' >> cafeteria-revision/README.mdSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Guarda el cambio
git -C cafeteria-revision commit -am "Indicar el precio del te"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Sube la rama
git -C cafeteria-revision push -u origin precio-teSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Abre la pull request y revísala
Pulsa New Pull Request en la página del repositorio, o pregunta a la API, que es lo que hace el botón. El servidor calcula entonces si la rama es fusionable.
Quien revisa lee el diff y escribe comentarios. Gitea no deja aprobar tu propio cambio, así que aquí comentas. En un equipo, un compañero aprueba.
Abre la pull request
curl -s -o /dev/null -w '%{http_code}\n' -u student:student -H 'Content-Type: application/json' -d '{"title":"Indicar el precio del te","head":"precio-te","base":"main","body":"El te cuesta 2 euros desde el lunes."}' http://gitea:3000/api/v1/repos/student/cafeteria-revision/pullsSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Pregunta si se fusiona sin conflicto
curl -s http://gitea:3000/api/v1/repos/student/cafeteria-revision/pulls/1 | grep -o '"mergeable":[a-z]*'Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Escribe un comentario de revisión
curl -s -o /dev/null -w '%{http_code}\n' -u student:student -H 'Content-Type: application/json' -d '{"body":"Me parece correcto."}' http://gitea:3000/api/v1/repos/student/cafeteria-revision/issues/1/commentsSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Lee el diff como quien revisa
curl -s http://gitea:3000/api/v1/repos/student/cafeteria-revision/pulls/1.diffSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
La fusión ocurre en el servidor
Cuando termina la revisión, alguien pulsa Merge. El servidor crea un commit de fusión en main. Tu ordenador todavía no lo sabe.
Por eso ejecutas git fetch, que descarga las novedades sin cambiar tus archivos. Después lees el historial de origin/main, la copia que Git guarda de la rama del servidor.
Fusiona la pull request
curl -s -o /dev/null -w '%{http_code}\n' -u student:student -H 'Content-Type: application/json' -d '{"Do":"merge"}' http://gitea:3000/api/v1/repos/student/cafeteria-revision/pulls/1/mergeSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Descarga las novedades
git -C cafeteria-revision fetchSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Dibuja el historial de main en el servidor
git -C cafeteria-revision --no-pager log --graph --format=%s origin/mainSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un error frecuente
Advertencia
Mucha gente cree que fusionar una pull request cambia los archivos de su propio ordenador. No es así. La fusión ocurre en el servidor. Ejecuta git fetch para verla, y después cambia a main y ejecuta git pull para traerla a tu propia main.