|
| 1 | +## Cómo hacer tu primera contribución a Python Canarias |
| 2 | + |
| 3 | +Antes de nada, gracias por tu interés, solo eso ya significa bastante para |
| 4 | +nosotros. Hacer una contribución al _software_ libre es muy interesante, no |
| 5 | +solo para contribuir a la comunidad, también es una forma de aprender y |
| 6 | +adquirir nuevas competencias, y de formar parte de nuestra comunidad. |
| 7 | + |
| 8 | +### Primer paso, empezar con Git y GitHub |
| 9 | + |
| 10 | +Lo primero que necesitas es un conocimiento, aunque sea básico, de Git y GitHub. |
| 11 | +Si no sabes nada de Git ni de GitHub, te recomendamos el tutorial |
| 12 | +de [La guía para principiantes de Git y Github de FreeCodeCamp](https://www.freecodecamp.org/espanol/news/guia-para-principiantes-untitled/). |
| 13 | + |
| 14 | +También necesitarás una cuenta en [GitHub](https://github.com/), que es donde |
| 15 | +tenemos almacenado el código fuente de nuestro proyecto. Si no tienes cuenta |
| 16 | +puedes crearte una sin problemas, es totalmente gratuito. |
| 17 | + |
| 18 | +Nuestro proyecto está alojado en la siguiente página: |
| 19 | + |
| 20 | +[https://github.com/pythoncanarias/pycan-web](https://github.com/pythoncanarias/pycan-web) |
| 21 | + |
| 22 | + |
| 23 | +### Segundo paso, hacer un _fork_ del repositorio |
| 24 | + |
| 25 | +Con tu cuenta de GitHub, ahora puedes hacer un _fork_ de nuestro proyecto en tu |
| 26 | +repositorio. Este _fork_ es simplemente una copia de nuestro repositorio, que |
| 27 | +es independiente del original, en el sentido de que puedes realizar los |
| 28 | +cambios que quieras en la misma y no tendrán efecto ninguna en nuestro código. |
| 29 | +Así puedes experimentar y jugar con el código sin miedo a romper nada. |
| 30 | + |
| 31 | +Para hacer el _fork_, asegúrate de que estás validado correctamente en _GitHub_ |
| 32 | +con tu cuenta, y simplemente y visita con tu navegador nuestro repositorio. |
| 33 | +Una vez allí, solo tienes que pulsar el botón con la leyenda _Fork_. |
| 34 | + |
| 35 | + |
| 36 | + |
| 37 | +El nuevo repositorio, el tuyo, tendrá una URL como esta: |
| 38 | + |
| 39 | +``` |
| 40 | +https://github.com/<Tu User Name>/pycan-web |
| 41 | +``` |
| 42 | + |
| 43 | +### Tercer paso, clonar el repositorio |
| 44 | + |
| 45 | +Ahora tienes el código en tu propio repositorio en _GitHub_. El siguiente |
| 46 | +paso es descargar el código en una carpeta de tu ordenador, un sitio |
| 47 | +donde puedes trabajar cómodamente con él. |
| 48 | + |
| 49 | +Esta operación se conoce como _clonado_ del repositorio. Para ello, abre una |
| 50 | +terminal y escribe el siguiente comando: |
| 51 | + |
| 52 | +```shell |
| 53 | +git clone https://github.com/<TuUserName>/pycan-web.git |
| 54 | +``` |
| 55 | + |
| 56 | +Ahora ya tienes una copia local de tu repositorio en tu disco duro. |
| 57 | + |
| 58 | +Este repositorio local está vinculado con tu propia copia de nuestro |
| 59 | +repositorio. Puedes también vincularlo con el repositorio original; esto será |
| 60 | +cómodo especialmente al final, cuando queremos incorporar los cambios que hayas |
| 61 | +hecho en nuestro repositorio. Para vincular con el repositorio original, usa el |
| 62 | +siguiente comando: |
| 63 | + |
| 64 | +```shell |
| 65 | +git remote add upstream https://github.com/pythoncanarias/pycan-web |
| 66 | +``` |
| 67 | + |
| 68 | +### Quinto paso, crear una nueva rama |
| 69 | + |
| 70 | +Para crear una rama usaremos el siguiente comando: |
| 71 | + |
| 72 | +```shell |
| 73 | +git checkout -b <nombre de la nueva rama> |
| 74 | +``` |
| 75 | + |
| 76 | +Ahora estamos situados en una nueva rama. Todos los cambios que hagamos ahora |
| 77 | +se quedan dentro de esta rama hasta que se pueda reunificar esta rama con la |
| 78 | +rama principal, o bien se borre esta rama y descartemos todos los cambios que |
| 79 | +hubiera en ella. |
| 80 | + |
| 81 | + |
| 82 | +### Sexto paso |
| 83 | + |
| 84 | +Aquí es donde haces tu magia: realiza los cambios que creas oportunos, |
| 85 | +los pruebas si puedes y los vas añadiendo a la rama. Puedes usar `git status` para |
| 86 | +obtener un breve informe de la situación actual de la rama en la que estás. |
| 87 | + |
| 88 | +Supongamos que has cambiado parte del texto del fichero `README.md`. Podemos |
| 89 | +añadir este fichero al área de trabajo con: |
| 90 | + |
| 91 | +```shell |
| 92 | +git add README.md |
| 93 | +``` |
| 94 | + |
| 95 | +Cada vez que modifiques el código, el comando `add` tiene que ser ejecutado otra |
| 96 | +vez para que los últimos cambios se tengan en cuenta en el área de trabajo. |
| 97 | + |
| 98 | +Existe la forma abreviada `git add -u` para que añada al área de trabajo todos |
| 99 | +los ficheros que hayan sido actualizados (`-u` por _updated_). Yo suelo añadir el |
| 100 | +_flag_ `-v` para que me muestre un listado de los ficheros añadidos, o sea que |
| 101 | +quedaría así: `git add -uv`. |
| 102 | + |
| 103 | +Cuando estés segura de tus cambios, puedes confirmarlos con la |
| 104 | +orden `commit` de Git: |
| 105 | + |
| 106 | +```shell |
| 107 | +git commit -m "Comentario describiendo los cambios realizados" |
| 108 | +``` |
| 109 | + |
| 110 | +Nota: No es necesario que hagas un único _commit_ al final, puedes realizar todos |
| 111 | +los commits que quieras, pero si es verdad que el paso previo a subir el código |
| 112 | +al repositorio debe ser un `commit`. Si no lo hacemos así, quedarían cambios |
| 113 | +el el área de trabajo no confirmadas y, por tanto, ignoradas en el siguiente |
| 114 | +paso, en el `push`. |
| 115 | + |
| 116 | +### Séptimo paso, exportar o entregar (_push_) los cambios locales al repositorio. |
| 117 | + |
| 118 | +Como se comentó antes, el comando básico aquí es `push`: |
| 119 | + |
| 120 | +```shell |
| 121 | +git push -u origin <nombre de la rama> |
| 122 | +``` |
| 123 | + |
| 124 | +Este paso crea la rama en el repositorio remoto y sube todos los |
| 125 | +cambios que estén confirmados en el área de trabajo. |
| 126 | + |
| 127 | +### Octavo paso, crear un _Pull Request_ |
| 128 | + |
| 129 | +Una vez que tus cambios están en tu repositorio, están listos para |
| 130 | +realizar un _Pull Request_, que básicamente es una solicitud hecha para |
| 131 | +incorporar los cambios incluidos en una rama a otra rama. |
| 132 | + |
| 133 | +En este caso, lo que debemos hacer es un _Pull Request_ indicando que queremos |
| 134 | +incorporar los cambios realizados en nuestra rama hacia la rama `mastar` del |
| 135 | +repositorio original (Es decir, el repositorio de Python Canarias desde |
| 136 | +el cual se hizo el _fork_ en el paso dos). |
| 137 | + |
| 138 | +Para ello, abrimos el navegador apuntando a nuestro repositorio en GitHub y |
| 139 | +pulsamos el botón que reza "_Compare and Pull Request_". Si todo ha ido bien |
| 140 | +nosotros, los mantenedores del repositorio original, seremos notificados |
| 141 | +de los cambios y podremos revisarlos y si los encontramos adecuados, |
| 142 | +incorporarlos al mismo. |
| 143 | + |
| 144 | +Felicidades, acabas de realizar tu aportación a Python Canarias. |
| 145 | + |
| 146 | + |
| 147 | +### Enlaces interesantes |
| 148 | + |
| 149 | +- [La guía para principiantes de Git y Github](https://www.freecodecamp.org/espanol/news/guia-para-principiantes-untitled/) de FreeCodeCamp |
| 150 | + |
| 151 | +- [Hacktoberfest](https://hacktoberfestes.dev/) |
| 152 | + |
| 153 | +- [Make your first open source contribution](https://markodenic.com/make-your-first-open-source-contribution/) de Marko Denic |
| 154 | + |
| 155 | +- [Recursos de Programación](https://github.com/Acadeller/recursos-programacion) |
0 commit comments