-
Notifications
You must be signed in to change notification settings - Fork 70
Tutorial paso a paso: contribuyendo a un pull request
Según está definido en el flujo de trabajo, todas las nuevas implementaciones deben realizarse sobre ramas nuevas en forks del repositorio principal de aeropython. En algunas ocasiones, bien porque queremos hacer contribuciones o cambios a una rama que está en proceso de pull request, o bien porque queremos utilizarla como base para la implementación de una nueva funcionalidad que no está todavía incluida en la rama master, necesitamos acceder a estas ramas desde nuestro repositorio local.
En esta página se describe el proceso a seguir en ambos casos sobre un ejemplo práctico:
La rama
olrosales:input_generator
se encuentra en proceso de revisión, el pull-request no se ha completado y no se ha integrado todavía en la ramaAeroPython:master
. El objetivo es: primero hacerla accesible desde nuestro ordenador y después realizar una serie de modificaciones y pedir al propietario, en este casoolrosales
, que los integre para que pasen a formar parte del pull request original.
Partiendo de que ya se ha hecho un fork
y un clone
de PyFME
(más info aquí, de modo que el repositorio está disponible en nuestro equipo, el siguiente paso es añadir y actualizar el fork del usuario cuya rama quieres modificar, en este caso:
$ git remote add upstream [email protected]:AeroPython/PyFME.git
$ git fetch upstream-oscar
remote: Counting objects: 64, done.
remote: Total 64 (delta 23), reused 23 (delta 23), pack-reused 41
Unpacking objects: 100% (64/64), done.
From github.com:olrosales/PyFME
* [new branch] input_generator -> upstream-oscar/input_generator
* [new branch] master -> upstream-oscar/master
Una vez que la rama es visible desde nuestro ordenador, lo que haremos es crear una rama nueva tomando como origen la rama remota:
$ git checkout -b input_generator_contribution upstream-oscar/input_generator
Branch input_generator_contribution set up to track remote branch input_generator from upstream-oscar.
Switched to a new branch 'input_generator_contribution'
$ git branch -v
* input_generator_contribution 839975e Added changes in input_generator
master d52c33e Merge pull request #48 from JuanMatSa/tascaseas
A partir de este momento podemos hacer las modificaciones que queramos en la rama input_generator_contribution
. Estos cambios, pueden querer integrarse en la rama desde la que habíamos partido: upstream-oscar/input_generator
o directamente en AeroPython:master
. Veremos aquí el primer caso ya que el primero está explicado aquí. Éste es sólo una ligera modificación.
Una vez hechas las modificaciones (con sus commits
) se procede a subir los cambios a nuestro repositorio personal remoto:
$ git push origin input_generator_contribution
y desde www.github.com/tu-usuario/PyFME haremos el pull request como está explicado en: https://github.com/AeroPython/PyFME/wiki/Tutorial-paso-a-paso-del-flujo-de-trabajo#creando-un-pull-request.
IMPORTANTE:
- Se debe fijar como
base fork
el repositorio del que partiste: en este casoolrosales/PyFME
- como
base
, la rama de ese repositorio:input_generator
- como
head fork
tu repositorio y comocompare
:input_generator_contribution
Una vez el colaborador ha solicitado el pull request y consideras que los cambios están para ser agregados, en la pestaña Pull Request, aceptas y confirmas el merge.
Ahora los cambios están en tu repositorio remoto, pero para poder seguir trabajando debes poner al día tu repositorio local. Para ello:
$ git checkout rama_correcta # Nos situamos en la rama concreta en la que estamos trabajando
$ git checkout -- . # Limpiamos los cambios locales, en el caso de que los haya
$ git branch -u origin/rama # En caso de que la rama local aún no siga a la remota.
& git fetch origin # Actualizamos los cambios
& git merge --ff-only origin/rama # Bajamos los cambios a nuestro repositorio local