PDA

Ver la Versión Completa : [TUTORIAL] Cómo usar Github


mbc596
01/09/13, 23:48:04
Todos sabemos gracias a que es tan grande android. Google tuvo la gran idea de que android fuera Opensource, esto ha sido bueno para ellos a nivel de empresa, pero también a beneficiados a todos los usuarios. Después aparecieron los grandes grupos de desarrollo, principalmente CyanogenMod. Bueno todos os sabéis la historia como va.
Todos tienen en común que publican el código de sus modificaciones. Gracias a esto han aparecido muchas ROMS, prácticamente podríamos cambiar de ROM cada dia.
La mayoría, por no decir todos, utilizan Github. Hace poco me metí a ver como funcionaba y hice un tutorial para dev-puremod. Y ahora os lo comparto, ya que en mi opinión es importante publicar el código, simplemente por respeto a los grandes desarrolladores que lo comparten y gracias a esto android es lo que es.

IMPORTANTE: Recientemente empezó una discusión por el tema de publicar o no el código. Esto no sirve para volver a este debate. Solo para que la gente que quiera compartirlo sepa por donde empezar. Así que porfavor ninguna discusión sobre esto.

¿QUE ES GITHUB?

Github es una página web que permite alojar el código de proyectos utilizando el sistema de control de versiones Git. Github tiene una cuenta gratuita y otras de pago. En la cuenta gratuita tendremos un nombre ilimitado de repositorios públicos, si almacenamos el código de un proyecto allí seria opensource. Si se quiere repositorios privados se tiene que contratar la versión de pago.

CREAR CUENTA EN GITHUB

Este es un paso muy sencillo que estoy seguro que todos lo sabréis hacer sin ningún problema.
Entramos en github.com y directamente nos aparece una pantalla para registrarnos. Nos registramos

GIT

Instalar

Primero de todo necesitamos instalar git. Git, tal como dice Wikipedia (http://es.wikipedia.org/wiki/Git), es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando estas tienen un gran número de archivos de código fuente.

Vamos a instalar Git:

apt-get install git

Si queréis seguir el tutorial desde windows tenéis que seleccionar windows en la siguiente página: http://git-scm.com/downloads
Esto es un programa llamado git shell que seria parejo a cygwin, pero especializado por los comandos de git.
Configurar

Una vez que tenemos instalado git es hora de configurarlo. Para hacer esto necesitamos abrir el terminal y introducir lo siguiente:
git config --global user.name "Your Name Here"

git config --global user.email "[email protected]"

*El email tiene que ser el mismo que el de la cuenta de Github!

Más adelante tendremos que generar una contraseña. Vamos a guardar la contraseña en cache para que no nos la pide cada vez. Introducimos lo siguiente en el terminal.
git config --global credential.helper cache

Por defecto hará que la contraseña se guarde por un tiempo de 15 minutos. Vamos a cambiar esto para que se guarde durante una hora:
git config --global credential.helper 'cache --timeout=3600'
NOTA: 3600 hace referencia al tiempo en segundos. Podemos cambiarle por el tiempo que queramos.

Una vez hecho todo esto vamos a generar una SSH Key.

SSH KEY

La ssh key se utiliza para establecer una conexión segura entre Github y tu ordenador.
Partimos de la base que no tenemos ninguna llave generada. Si queréis comprobarlo escribid lo siguiente en el terminal:
cd ~/.ssh
ls
Si tenemos alguna llave generada tendría que aparecer alguno de estos dos archivos.
id_rsa.pub id_dsa.pub
En el caso que los tengamos vamos a ignorar el siguiente paso y pasaremos directamente al paso de instalar xclip.

Generar
Vamos a introducir lo siguiente en el terminal
ssh-keygen -t rsa -C "[email protected]"

Ahora nos va a parecer lo siguiente:
Generating public/private rsa key pair.
# Enter file in which to save the key (/home/you/.ssh/id_rsa):

Vamos a darle al enter sin escribir nada.
Ahora nos va a pedir que escribamos dos veces una contraseña. Esta contraseña nos la va a pedir cada vez que queramos subir algo a nuestra cuenta. Recordad que hemos configurado que se guarde en cache durante 1 hora.
Nos aparecerá esto:
Enter passphrase (empty for no passphrase): Escribir contraseña
# Enter same passphrase again: Repetir contraseña

Ahora debería aparecer algo parecido a esto:
Your identification has been saved in /home/you/.ssh/id_rsa.
# Your public key has been saved in /home/you/.ssh/id_rsa.pub.
# The key fingerprint is:
# 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
| .+ + |
| = o O . |
| = * * |
| o = + |
| o S . |
| o o = |
| o . E |
| |
| |
+-----------------+

Ahora nuestra llave debería estar en ~/.ssh/id_rsa.pub
Podemos copiarla manualmente o de la siguiente forma
sudo apt-get install xclip Instala el programa xclip. Va a pedir la contraseña de linux (ojo no confundir con la contraseña de git!)

Una vez instalado escribimos lo siguiente para copiar la llave:
xclip -sel clip < ~/.ssh/id_rsa.pub

Añadir llave a Github

Ahora toca conectar git con Github mediante la llave que hemos generado.
Por esto entraremos en nuestra cuenta de Github, arriba a la derecha iremos a "Account settings" y finalmente a "SSH Keys".
O para que se más fácil entramos en este enlace: https://github.com/settings/ssh

Ahora presionamos "Add SSH Key"

En "title" podemos poner lo que queramos (ej. Linux) o si queréis lo podéis dejar en blanco (va a aparecer vuestro correo).
En la parte de "Key" pegamos lo que anteriormente copiamos con el programa xclip (simplemente botón derecho-pegar).
Finalmente le damos a "Add Key"

Probar si funciona

Para comprobar que lo tengamos enlazado correctamente escribiremos lo siguiente:
Nota: os va a aparecer una ventanita pidiendo una contraseña, debéis introducir la contraseña puesta en la configuración de la SSH Key. Si no lo haceis saldrá "Permission denied (publickey)"*
ssh -T [email protected]

Os tiene que aparecer lo siguiente:
The authenticity of host 'github.com (207.97.227.239)' can't be established.
# RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
# Are you sure you want to continue connecting (yes/no)?
Escribimos: yes

Y aparecerá esto:
Hi username! You've successfully authenticated, but GitHub does not
# provide shell access.

Ahora ya tenemos Github configurado en nuestro pc!

* Si os aparece "Permission denied (publickey)" en más ocasiones Github tiene una página dedicada a solucionar este problema: https://help.github.com/articles/error-permission-denied-publickey


Fuente:
https://help.github.com/articles/set-up-git#platform-linux
https://help.github.com/articles/generating-ssh-keys#platform-linux

------------------------------------------------------------------------------------------------------

EMPEZAR CON GITHUB

Para subir nuestro código a Github tenemos dos opciones: la primera subir nuestro código del ordenador y la segunda hacer un fork de otro repositorio.

Antes de seguir vamos a ver que es un repositorio. Dicho de forma rápida el repositorio es donde colgamos una parte de un proyecto (en caso de un proyecto con muchas partes. ej. codigo fuente de android) o todo el código de un proyecto (ej. una app).
Para que se me entienda mejor voy a explicar ejemplos teniendo en cuenta que la finalidad es subir el código fuente de una modificación nuestra de android (una ROM).

Primero empezaremos explicando como subir el código almacenado en el ordenador.

SUBIR EL CÓDIGO ALMACENADO EN EL PC

Primero será necesario crear un nuevo repositorio donde almacenar el código. Recordad que la cuenta gratuita de Github solo permite utilizar repositorios públicos, para proyectos opensource, si queréis repositorios privados os tocará pagar una cuota al mes.

Crear un repositorio

Una vez estás dentro de tu cuenta te encuentras en la página principal arriba a la derecha vas ver tu nombre de usuario, justo al lado verás tres botones, el primero sirve para crear un nuevo repositorio, el segundo es los ajustes de tu cuenta y el última para salir de tu cuenta. Lógicamente vamos a seleccionar el primero (el que está más cerca del nombre de usuario).
http://imageshack.us/a/img14/8414/4imd.png

Ahora va aparecer una página donde vamos a configurar nuestro nuevo repositorio.
http://imageshack.us/a/img90/1121/c3z.png
Vamos a introducir un nombre para el repositorio, y si queréis una descripción para el repositorio.
Finalmente si queréis podéis incluir un "README" y una licencia, esto es elección vuestra.

Subir el código al repositorio

Vamos a abrir la carpeta donde tenemos almacenada los archivos y subcarpetas que queramos subir.
Una vez dentro nos tendríamos que asegurar que no contenga una carpeta .git, ya que si la contiene puede causar errores (ej. el código de android incluye esta carpeta). Para eso tenemos que ir a "archivos--preferencias--vistas" y seleccionar "Mostrar archivos ocultos y de respaldo"

Bien, ahora abrimos la carpeta en el terminal.
Ahora escribiremos lo siguiente en el terminal:
git init
Va a crear una carpeta .git

Ahora seleccionaremos que suba todo lo que contenga la carpeta
git add *

Si queréis ver lo que se ha añadido para subir tenéis que escribir:
git status

Ahora vamos a hacer un commit. Lo que sale entre comillas (" ") es lo que a parecer en el commit (el nombre)
git commit -m "Proyecto subido"

Ahora es hora de asignar el repositorio remoto. Escribimos lo siguiente
git remote add origin [email protected]:nombre_de_usuario/nombre_del_repositorio.git

Finalmente vamos a subirlo todo a nuestro github, dentro del repositorio que hemos creado anteriormente.
git push -u origin master

El código se va a subir en la "branch" master, esto es así por defecto. Luego más adelante explicaré como crear nuevas "branches" y subir cambios en cada una de ellas.

Ahora si entrais en vuestro github, seleccionáis vuestro repositorio y veréis arriba de los archivos que pone "1 commit". Si entráis va a decir todos los cambios que se han producido, en este caso tendremos "Proyecto subido"

http://imageshack.us/a/img580/250/6xr.png

HACER UN FORK DE OTRO PROYECTO

Hacer un fork de otro repositorio significa que lo copiamos hacia nuestro github tal cuál. Esto significa que guarda los commits que se hayan hecho y sus "branches".

Hacer un fork es muy fácil, tenemos que buscar un repositorio que nos interese, por ejemplo el repositorio "platform_frameworks_base" del Github de Android (https://github.com/android).
Entramos dentro del repositorio y seleccionamos "Fork" arriba a la derecha.
http://img541.imageshack.us/img541/8726/kxxz.png

Y nos saldrá esta pantalla:
http://imageshack.us/a/img196/4254/7osi.png

Cuándo termine ya tendremos el repositorio copiado a nuestro Github. Ahora vamos a descargar el código a nuestro ordenador para poder realizar los cambios y subirlos a Github.

Descargar el código

Vamos a abrir en el terminal el lugar donde queramos guardar el código.
Ahora escribiremos en el terminal:
git clone [email protected]:usuario/repositorio.git
Si queréis encontrar más fácilmente la parte final tenéis una opción dentro del repositorio, lo que hará es copiar esta dirección automáticamente.

http://imageshack.us/a/img35/381/b84c.png

Lo bueno de hacer un fork es que no es necesario asignar el nuestro repositorio.

Siguiendo cualquier de estas dos opciones ya tendréis el código subido a github y sincronizado en vuestro PC. Ahora vamos a ver los comando principales y como crear nuevas "branches"

CREAR NUEVAS "BRANCHES"

Esta opción la realizaremos desde dentro de nuestro github, más explicitamente, dentro de nuestro repositorio.
Seleccionamos "branch: master" y se abrirá una lista, y un lugar para escribir. Allí escribimos el nombre de la "branch" que queremos, como no la encontrará nos dira de crear una nueva "branch"
http://imageshack.us/a/img29/6494/cmbn.png

Para cambiar la "branch" por defecto tenemos que ir al menu de la derecha y abajo seleccionar "settings"

Dentro de "settings" cambiamos la "branch" por defecto en "Default Branch"
http://imageshack.us/a/img90/7990/4og2.png

COMANDOS BÁSICOS

Aquí os voy a mostrar los comandos más básicos.

Subir los cambios a Github

Cada vez que modificamos un archivo y queramos subirlo a Github haremos lo siguiente, es lo mismo que se ha realizado en proceso de subir el código almacenado al PC a Github.
git add <ruta del archivo>
Este comando sirve para añadir los archivos a subir.

Si quereis comprobar los archivos añadidos utilizaremos:
git status
http://imageshack.us/a/img844/5950/l367.png
Como vemos nos salen archivos en rojo y otros en verde. Los archivos en verde ya están añadidos, y los archivos en rojo *son los que faltan para añadir.

Ahora es necesario introducir un nombre para el commit
git commit -m "escribir los cambios realizados"

Tenemos otra forma para introducir el nombre del commit. Podemos hacer:
git commit -a
De esta forma se abrirá el GNU Nano, la primera linea que escribamos será la que aparecerá en el commit, las líneas de debajo a aparecerá una vez dentro del commit. Las lineas que empiezan por # no se van a mostrar en el commit.

Y finalmente el siguiente comando sirve para subir los cambios a github
git push

Actualizar el código del PC

Imaginaos que por cualquier motivo habéis modificado algo directamente desde Github, o que realizáis el proyecto también en otro ordenador o con otra persona.
El siguiente comando sirve para bajar los cambios que hay en el github y que no están en el PC
git pull
Si los cambios han sido muchos pueden surgir conflictos. Más adelante se explicará como solucionarlo.

Comandos para seleccionar la "branch"

Un poco más atras hemos creado una nueva "branch" ahora debemos seleccionarla para subir nuestros cambios en esta "branch".
Para ver que "branches" tenemos que escribir lo siguiente en el terminal:
git branch
Solo nos a aparece "master", para que aparezca la "branch" que hemos creado primero tenemos que hacer git pull (explicado anteriormente)
Ahora si hacemos git branch si va a aparecer la "branch" creada anteriormente.
Com vereis la "branch" seleccionada es "master, ahora toca seleccionar la "branch" deseada.
Para eso escribimos
git checkout nombre_de_la_branch
Ahora si hacemos otra vez git branch veréis que aparece la branch deseada como seleccionada.

Ahora cada vez que hagamos git push se subirá dentro de la "branch" seleccionada dejando las demás tal como estaban.

Otros comandos

Esta parte es gracias a @furious

git revert < sha del decommit>
Sirve por si algo ha fallado o se quiere eliminar,este lo deshace automáticamente.

git checkout <sha del commit>
Sirve para dejar el codigo como estaba en ese commit. por si muchos han fallado o se quiere quitar algo que has implementado que incluya varios... hacerlo de golpe.

git log o git log -p
Sirve para ver los commits fusionados y ver sus sha por si alguna de aquellas estas trabajando en local o aun no has echo git push aun. El segundo aparte de del commit te muestra los cambios.

git merge <rama>

Esto sirve por si por ejemplo tienes una rama estable y una rama experimental, cuando en la rama experimental has echo cambios que querías probar y no estas seguro si quieres añadir, no tener que ir commit por commit en el caso que sean muchos fusionarlo todo de golpe.

http://www.dev-puremod.es/showthread.php?tid=861

http://www.dev-puremod.es/showthread.php?tid=861

danyh
01/09/13, 23:50:28
pole

David_Vaz
01/09/13, 23:51:45
Chinchetazo :D

mbc596
01/09/13, 23:55:26
Tenia pensado reservar uno porque iba a hacer uno para hacer cherry-picks pero se me ha olvidado... jajaja

David_Vaz
02/09/13, 00:04:52
Tenia pensado reservar uno porque iba a hacer uno para hacer cherry-picks pero se me ha olvidado... jajaja

Dile a algún moderata que borre los dos comentarios y volvemos a poner después... :D

turydios
02/09/13, 00:08:32
menudo currazo,si señor

mbc596
02/09/13, 00:10:52
Dile a algún moderata que borre los dos comentarios y volvemos a poner después... :D

Da igual, un tutorial de como hacer cherry-picks se puede merecer tranquilamente un hilo especifico para él

David_Vaz
02/09/13, 00:14:21
Da igual, un tutorial de como hacer cherry-picks se puede merecer tranquilamente un hilo especifico para él

También... :risitas:

PD: Te envío MP

kisler
02/09/13, 00:22:26
Muchas gracias por el tutorial :ok:

Hunter_Dreams
02/09/13, 00:22:44
Excelente trabajo. Aun recuerdo el rato que me llevo enterarme de esto bien. Asi resultan las cosas más faciles.

trek85002010
02/09/13, 00:30:25
@mbc596 en el foro PureMod te he hecho una pregunta. Pero la hago aquí también, y es relacionado sobre el git add * pues creo que eso tardará mucho, su función es subir todo lo que haya es una carpeta, entonces si quiero subir el source de cyano, hago:

Abro terminal
cd android/system
Corto y pego la carpeta .repo fuera de system
git add *

Seria correcto así?. O mantengo la carpeta repo.

mbc596
02/09/13, 00:31:50
Excelente trabajo. Aun recuerdo el rato que me llevo enterarme de esto bien. Asi resultan las cosas más faciles.

Por eso lo hize, me costo mucho conseguirlo y como utilizo máquina virtual seguro que la borraré más de una vez y tendré que volver a hacerlo, así no me olvidaré nunca

mbc596
02/09/13, 00:34:30
@mbc596 en el foro PureMod te he hecho una pregunta. Pero la hago aquí también, y es relacionado sobre el git add * pues creo que eso tardará mucho, su función es subir todo lo que haya es una carpeta, entonces si quiero subir el source de cyano, hago:

Abro terminal
cd android/system
Corto y pego la carpeta .repo fuera de system
git add *

Seria correcto así?. O mantengo la carpeta repo.

Quieres subir todo el codigo a la vez?
Yo te recomiendaria que lo subieras por partes, fijate en como lo tienen las grandes roms.
Incluso android lo tiene así, se suben las carpetas que tienen un .git en su interior, es más cómodo.
Y el git add * en frameworks/base tarda un ratito

alexret
02/09/13, 00:35:34
Como ya te dije en Puremod, gran trabajo para los que no sabemos usar github :aplausos:

AlvaroOrduna
02/09/13, 00:45:55
mbc596, donde coño estabas cuando estaba aprendiendo a usar git? Me hubiera resultado muy útil toda esta información.
Ahora nadie tiene escusa, entre tu tutoriales y el de veloz de como compilar, esto de crear Roms se va a volver el pan nuestro de cada día...
Gracias por el curro!!

yeyorca
02/09/13, 00:51:59
Chincheta aqui o en el foro general de android, el de cocina, da igual, pero chincheta ya.

Gracias por el curro.

Un saludo.

IvanD3
02/09/13, 11:20:15
Sobresaliente

ironjon
02/09/13, 14:06:08
Estoy seguro que a más de uno le vendrá bien

klander
10/09/13, 23:04:09
Excelente tutorial :ok:

David_Vaz
17/10/13, 22:07:31
Mbc.. one question..

Yo hago un cherry-pick.. vale.

davidvaz@davidvaz ~/android/omni/packages/apps/Settings $ git fetch https://github.com/NarpAOSP/packages_apps_Settings && git cherry-pick 8bcdb81a095db99e96c208928d32372e5e518f90
warning: no common commits
remote: Counting objects: 3281, done.
remote: Compressing objects: 100% (1491/1491), done.
remote: Total 3281 (delta 1475), reused 3220 (delta 1418)
Receiving objects: 100% (3281/3281), 5.79 MiB | 293 KiB/s, done.
Resolving deltas: 100% (1475/1475), done.
De https://github.com/NarpAOSP/packages_apps_Settings
* branch HEAD -> FETCH_HEAD
error: no se puede aplicar 8bcdb81... Add active display to ChameleonOS [2/2]
consejo: después de la resolución de conflictos, marcar las rutas corregidas
consejo: con «git add <paths>» o «git rm <paths>»
consejo: y hacer commit del resultado con «git commit»
error: Could not parse conflict hunks in res/values/arrays.xml
Recorded preimage for 'res/values/strings.xml'

Y recibo eso.. es por que hay conflictos o por que hay algo que no hago bien? :D

Por que yo miro los archivos y no sale nada de <<<< HEAD... :S

mbc596
17/10/13, 22:50:17
Mbc.. one question..

Yo hago un cherry-pick.. vale.

davidvaz@davidvaz ~/android/omni/packages/apps/Settings $ git fetch https://github.com/NarpAOSP/packages_apps_Settings && git cherry-pick 8bcdb81a095db99e96c208928d32372e5e518f90
warning: no common commits
remote: Counting objects: 3281, done.
remote: Compressing objects: 100% (1491/1491), done.
remote: Total 3281 (delta 1475), reused 3220 (delta 1418)
Receiving objects: 100% (3281/3281), 5.79 MiB | 293 KiB/s, done.
Resolving deltas: 100% (1475/1475), done.
De https://github.com/NarpAOSP/packages_apps_Settings
* branch HEAD -> FETCH_HEAD
error: no se puede aplicar 8bcdb81... Add active display to ChameleonOS [2/2]
consejo: después de la resolución de conflictos, marcar las rutas corregidas
consejo: con «git add <paths>» o «git rm <paths>»
consejo: y hacer commit del resultado con «git commit»
error: Could not parse conflict hunks in res/values/arrays.xml
Recorded preimage for 'res/values/strings.xml'

Y recibo eso.. es por que hay conflictos o por que hay algo que no hago bien? :D

Por que yo miro los archivos y no sale nada de <<<< HEAD... :S

Haz git status, los archivos en rojo son los que tienen conflictos

David_Vaz
17/10/13, 22:56:36
Haz git status, los archivos en rojo son los que tienen conflictos

Algo hice mal por que me metió cosas que eran de otros commits (los Strings de PIE por ejemplo...)

Borrado y lo haré a mano (intentaré)

#OdioCherryPickear :risitas:

Gracias :ok:

mbc596
17/10/13, 23:14:19
Algo hice mal por que me metió cosas que eran de otros commits (los Strings de PIE por ejemplo...)

Borrado y lo haré a mano (intentaré)

#OdioCherryPickear :risitas:

Gracias :ok:

Si en el momento en que se hizo el commit que estás intentando añadir en strings había referencias de PIE es normal que te los añada. Te va a dar conflicto porque en el archivo lo tiene y en cambio tu no lo tienes. Simplemente lo borras y ya está.

David_Vaz
17/10/13, 23:32:52
Si en el momento en que se hizo el commit que estás intentando añadir en strings había referencias de PIE es normal que te los añada. Te va a dar conflicto porque en el archivo lo tiene y en cambio tu no lo tienes. Simplemente lo borras y ya está.

Bueno.. lo he hecho a mano y de momento compila.. seguramente dará error.. pero..

Lo haré directo con los otros commits... xD

mbc596
17/10/13, 23:43:01
Bueno.. lo he hecho a mano y de momento compila.. seguramente dará error.. pero..

Lo haré directo con los otros commits... xD

El commit que has añadido es muy fácil y no vas a tener ningún problema al ponerlo a mano.
Pero con otros commits no va a ser tan fácil, y lo mejor será cherry-pick

David_Vaz
17/10/13, 23:57:28
El commit que has añadido es muy fácil y no vas a tener ningún problema al ponerlo a mano.
Pero con otros commits no va a ser tan fácil, y lo mejor será cherry-pick

He metido el de ListView Animations..

Habían algunos archivos que ni existian y he buscado los que tienen el nombre más similar.. igual con los .java

Esperemos que funcione! xD

Javier.d
03/11/13, 23:08:16
Estoy empezando con esto de compilar y de github, y al intentar crear la conexión SSH con esto
cd ~/.ssh
No encuentra el archivo o directorio, que puede ser?
Gracias

mbc596
03/11/13, 23:17:12
Estoy empezando con esto de compilar y de github, y al intentar crear la conexión SSH con esto
cd ~/.ssh
No encuentra el archivo o directorio, que puede ser?
Gracias

Sinceramente ni idea.

Prueba a seguir con el tutorial a ver si puedes seguirlo sin ningún problema

Javier.d
03/11/13, 23:19:29
Sinceramente ni idea.

Prueba a seguir con el tutorial a ver si puedes seguirlo sin ningún problema

Vale, pues ya mañana lo probaré, gracias ;)

Javier.d
11/11/13, 22:13:06
Cuando suba el código y vaya añadiendo commits, como subo esos commits al código??

robertron
20/11/13, 11:46:38
Habrá que estudiar esto bien

mbc596
20/11/13, 15:42:24
Cuando suba el código y vaya añadiendo commits, como subo esos commits al código??

No entiendo, subir el commit al código?

josem321
21/04/16, 10:00:17
Excelente!!:aplausos: