SISTEMAS CONTROL DE VERSIONES
GIT CON ECLIPSE
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1600565/git_logo.png)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
TRABAJAR sin UN SISTEMA CONTROL DE VERSIONES
Normalmente, cuando uno comienza a escribir sus propios programas, simplemente elige un entorno de programación que le guste y permita trabajar con el lenguaje de programación seleccionado, y empieza a codificar, sin más.
solo funcionaría cuando estamos trabajando individualmente
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1600565/git_logo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
TRABAJAR sin UN SISTEMA CONTROL DE VERSIONES
¡Muchos incovenientes!
- No podemos compartir fácilmente nuestro trabajo.
- No podemos volver a versiones anteriores.
- Debemos hacer copias de seguridad manuales.
- Debemos actualizarlas cada vez que modificamos.
- Es muy complicado juntar los cambios hechos por varias personas que han modificado el mismo documento
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1600565/git_logo.png)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
TRABAJAR con UN SISTEMA CONTROL DE VERSIONES
Todas estas dificultades pueden ser solventadas empleando un Sistema de Control de Versiones.
Existen muchos: Subversion, Mercurial o TFS.
No obstante, nosotros usaremos Git, dado que su popularidad es muy alta actualmente, es fácil de usar, y su enfoque distribuido nos aporta muchas ventajas.
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1600565/git_logo.png)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
git
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.
Git tiene funcionalidad plena y es utilizado en proyectos de gran relevancia.
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
git
Lo primero que necesitamos hacer cuando empezamos a utilizar Git, es crear un repositorio: contenedor de nuestro proyecto.
Normalmente se crea un repositorio local, pero también sería interesante disponer de uno al que pudiéramos acceder desde cualquier lugar, para así poder trabajar en cualquier momento y desde cualquier equipo: repositorio remoto
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
git
Existen varias alternativas en Internet:
- Github: hhttps://github.com/
- Bitbucket: http://bitbucket.org
Github no permite crear repositorios privados, de forma gratuita solo permite públicos. Por lo que usaremos Bitbucket.
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764014/Git-Logo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764015/Git-Logo.png)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
bitbucket
Lo primero que necesitamos es una cuenta en Bitbucket:
https://bitbucket.org/eugenia_perez
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
git con eclipse
Vamos a crear un proyecto en nuestro equipo.
Por ejemplo, abre Eclipse, y crea un nuevo proyecto.
Vete a la raíz del proyecto y pulsa el botón dcho. del ratón -> Team -> Share project. A continuación selecciona Git.
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
git con eclipse
La siguiente pantalla nos pide que creemos un repositorio o seleccionemos uno existente. Como aún no tenemos, nos creamos uno sobre el proyecto almacenado en el workspace:
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764031/Git-Logo.png)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
git con eclipse
A continuación pulsamos sobre Create Repository.
Nos informa de que no es la opción más recomendable, pero para nosotros individualmente es más cómoda para no tener dos copias en local del mismo proyecto.
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764035/Git-Logo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764040/Git-Logo.png)
Nuestro proyecto tiene asignado un repositorio,
pero no tiene aun nada almacenado
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
git con eclipse
Ahora vamos a guardar nuestros cambios en el repositorio -> comando commit.
Sobre el proyecto -> Team -> commit
Aquí introducimos comentarios que describan las actualizaciones que estamos realizando.
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
git con eclipse
Como es la primera vez que subimos el proyecto:
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764050/Git-Logo.png)
Selecciona todos
los ficheros (más
adelante quitaremos
algunas librerías...)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
git con eclipse
Pulsamos en Commit ->salvamos nuestros cambios en el repositorio local.
Commit and Push además de hacer un commit al repositorio local, hace un push al repositorio remoto si lo hubiera, subiendo así los cambios introducidos.
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Esta última opción suele dar problemas, así que lo haremos de otra manera.
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
git con eclipse
En Team -> Show in History, podremos ver el commit recién realizado. Nos mostraría un historial de las modificaciones.
Realiza ahora una modificación en el proyecto.
En el momento en que salves los cambios, el fichero se resaltará con el símbolo > indicando que ha habido modificaciones con respecto a la última versión guardada en el repositorio. Haz commit
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
git con eclipse
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764078/Git-Logo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764082/Git-Logo.png)
Team -> Show in History
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
git con eclipse
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Team -> Show in History
Desde aquí podremos pasarnos a versiones anteriores ->
Botón derecho sobre el commit a cancelar y Revert Commit
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764092/Git-Logo.png)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
git con eclipse y bitbucket
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Por último, vamos a compartir este repositorio también en Bitbucket.
Para ello, crea uno nuevo: Repositories -> create repository
Vamos a llamarlos todos con un nombre lógico:
ED.UT4.1HelloWorld
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
git con eclipse y bitbucket
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764102/Git-Logo.png)
Repositorio privado
Lenguaje Java
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
git con eclipse y bitbucket
Para obtener la URL del repositorio:
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764105/Git-Logo.png)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
git con eclipse y bitbucket
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Vete al Eclipse y pulsa la opción Team -> Push Branch 'master'.
Configura los parámetros de conexión a tu repositorio según corresponda:
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764110/Git-Logo.png)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
git con eclipse y bitbucket
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Por último, comprueba en Bitbucket que tu repositorio ha recibido correctamente todos los commits de tu repositorio local:
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764111/Git-Logo.png)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
DESCARGAR PROYECTOS git con eclipse
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Para ello, lo primero que debo hacer es buscar la URL del proyecto a descargar en Bitbucket:
https://eugenia_perez@bitbucket.org/eugenia_perez/ed.ut4.3variables.git
Para descargar repositorios de mi cuenta utilizaremos:
- usuario: entornos_desarrollo
- password: Entornos
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
DESCARGAR PROYECTOS git con eclipse
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Vamos a File -> Import -> Git -> Projects from Git
Seleccionamos Clone URI
Indicamos la URI y
las credenciales:
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764181/Git-Logo.png)
entornos_desarrollo
Entornos
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
DESCARGAR PROYECTOS git con eclipse
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Le decimos a todo que siguiente y ya tendremos el proyecto importado...
Si ahora queremos hacer modificaciones y posteriormente subirlo a NUESTRO REPOSITORIO...
Realizaría el Team -> Commit en local como siempre...
Luego Team -> Push Branch 'master'
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
DESCARGAR PROYECTOS git con eclipse
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Luego Team -> Push Branch 'master'
Y ahora tengo que cambiar la URL del repositorio al mío.
Tendré que crearlo previamente:
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764189/Git-Logo.png)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
DESCARGAR PROYECTOS git con eclipse
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Luego Team -> Push Branch 'master'
Y ahora tengo que cambiar la URL del repositorio al mío.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764190/Git-Logo.png)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
DESCARGAR PROYECTOS git con eclipse
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Cabe destacar que se puede configurar la estrategia a seguir cuando se haga pull en el futuro.
Por defecto, viene marcada la opción de realizar un merge entre lo que hay en el repositorio local y el remoto para fusionar los cambios.
Alternativamente se ofrece la opción de hacer un rebase.
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
DESCARGAR PROYECTOS git con eclipse
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Ambas operaciones, merge y rebase, producen el mismo resultado, si bien se recomienda a usuarios no expertos utilizar merge, ya que rebase es algo más compleja.
La principal diferencia es que merge genera un commit sobre la rama destino con los cambios de la rama origen que la primera no tiene.
Mientras que rebase no genera ese commit, haciendo una modificación más compleja.
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
creaciónd de ramas y merges
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Para la creación de dos copias o ramas de un mismo proyecto, que evolucionen de forma independiente siguiendo su propia línea de desarrollo.
Para ello se crean ramas de prueba, normalmente para desarrollo de nuevas funcionalidades o bien corrección de errores (código para evaluación).
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764199/Git-Logo.png)
branching
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
creaciónd de ramas y merges
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Si las modificaciones de estas ramas de prueba se quieren preservar, es posible realizar un merge con la rama principal.
Mediante una revisión unificada se realiza una integración de dos fragmentos de cambios, bien sobre el mismo fichero o sobre un conjunto de ellos, en lo que se conoce como fusión.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764201/Git-Logo.png)
FUSION
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
¿cUÁNDO SE PRODUCE UN MERGE...?
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Cuando un desarrollador, actualiza su copia local con los cambios realizados sobre algunos de los códigos fuentes, más aquellos cambios que han sido añadidos por otros integrantes del equipo.
Análogamente, esta operación puede suceder en el repositorio cuando el desarrollador intenta un check-in de sus cambios.
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
¿cUÁNDO SE PRODUCE UN MERGE...?
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Podría también necesitar una actualización de una solución presentada a un problema en una rama a la otra rama, tras haber realizado una bifurcación de código.
Podría darse el caso de que tras haber creado ramas con una línea independiente de desarrollo por algún tiempo, se requiera una fusión de las mismas en un único trunk unificado.
integración inversa
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
etiquetado o tagging
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Mediante los tags es posible darle un nombrado o etiqueta numerada al proyecto, que permita su posterior identificación en una fecha determinada:
- Identifican versiones publicadas del proyecto.
- Dichas versiones son ramas congeladas, no evolucionan.
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
etiquetado o tagging
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Creemos una nueva rama: dev, que está pensada para hacer desarrollo, manteniendo la rama master para ir haciendo merges desde dev cuando consigamos tener funcionalidades completas y estables.
Desde la perspectiva Git de Eclipse:
Window -> Show perspective -> Git
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
creación de rama de desarrollo (dev)
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Sobre el proyecto, Branches -> Switch to -> New Branch
La llamamos dev y automáticamente se cambia a la rama dev en la perspectiva Java.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764212/Git-Logo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764214/Git-Logo.png)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
CREACIÓN DE RAMA DE DESARROLLO (DEV)
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Sobre el proyecto, Branches -> Switch to -> New Branch
La llamamos dev y automáticamente se cambia a la rama dev en la perspectiva Java.
Hagamos ahora un cambio en la rama dev. -> commit.
Si ahora nos interesa congelar el estado de la aplicación y sacar una primera versión:
- creamos un tag desde la perspectiva de Git.
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
CREACIÓN DE RAMA DE DESARROLLO (DEV)
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
El tag se creará a partir de lo que haya en la rama sobre la que estemos trabajando en ese momento, en este caso dev.
Perspectiva de Git
- Sobre Tags -> New tag
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764216/Git-Logo.png)
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
CREACIÓN DE RAMA DE DESARROLLO (DEV)
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Por último, vamos a pasar los cambios realizados en la rama dev a la rama principal.
- Switch to master, ya que el merge debe ser iniciado por la rama que queramos que reciba los cambios.
- Team -> Merge, y seleccionamos la rama dev.
- Dejamos marcada la opción por defecto para que automáticamente haga un commit sobre la rama master con los cambios recibidos.
GIT
![](https://s3.amazonaws.com/media-p.slid.es/uploads/eugenia_perez/images/970645/logo4.png)
Sistemas Control de Versiones (SCV)
CREACIÓN DE RAMA DE DESARROLLO (DEV)
eugeniaperez.es
![](https://s3.amazonaws.com/media-p.slid.es/uploads/263327/images/1764001/Git-Logo.png)
Por último, vamos a pasar los cambios realizados en la rama dev a la rama principal.
- Switch to master, ya que el merge debe ser iniciado por la rama que queramos que reciba los cambios.
- Team -> Merge, y seleccionamos la rama dev.
- Dejamos marcada la opción por defecto para que automáticamente haga un commit sobre la rama master con los cambios recibidos.
GIT
Git con Eclipse
By eugenia_perez
Git con Eclipse
- 1,430