viernes, 19 de abril de 2013

Trabajando con SVN desde Eclipse ...... Algunos Conceptos

Como se mencionó en el post anterior, la idea es continuar con el trabajo con SVN y Eclipse, en esta oportunidad tocaré unos conceptos básicos a tener en cuenta cuando estemos haciendo control de versiones desde nuestro IDE.

Iniciaremos con conceptos básicos y luego temas como la Sincronización, conflictos y por ultimo miraremos como descargar un proyecto de un repositorio SVN remoto.

Empecemos!!!!


Lo que hay que Saber.

A continuación revisaremos unos conceptos que debemos tener muy presentes.

Synchronize: Esta funcionalidad es la que permite evidenciar los cambios realizados entre el proyecto local y el proyecto remoto, seleccionamos el proyecto local y damos "click derecho/Team/Synchronize with repository" y así se cargara la perspectiva de sincronización donde se hará una comparación entre el código local con el remoto donde nosotros decidimos si aceptar o no los cambios establecidos para su posterior actualización.

Update: cuando se tengan cambios en la versión remota, esta funcionalidad permite realizar las actualizaciones pertinentes al proyecto local en el que estamos trabajando,  para tal fin se debe sincronizar el proyecto y verificar los cambios que puedan haber.............si no hay conflictos y los cambios son aceptados se debe ubicar en el proyecto y dar click derecho/Update, así el repositorio sera sincronizado y los cambios actualizados.

Commit: Esta funcionalidad permite adicionar los cambios de nuestro proyecto local al proyecto remoto, en otras palabras subir o actualizar el proyecto en el repositorio.......... para realizar el commit, podemos simplemente hacer click derecho sobre nuestro proyecto y seleccionamos Team/Commit (aunque es mas recomendable realizarlo desde la vista de sincronización cuando estemos seguros que nuestros cambios no afectaran el desarrollo de otra persona), luego desde la ventana que se carga introducimos un comentario sobre el cambio realizado, y seleccionamos los archivos a subir.... en este enlace presento un tutorial donde se realiza un commit  a un repositorio SVN.


Show History : Permite revisar la trazabilidad del proyecto, con esta funcionalidad podemos hacer un recorrido por los cambios en el tiempo que ha tenido el código, tendremos información sobre el historial del proyecto, usuarios, fecha y comentarios entre otros.

Conflictos: Los conflictos son inconsistencias o diferencias entre el código local con el código remoto que generan como su nombre lo dice, conflictos en el proyecto, por ejemplo si un desarrollador cambia el tipo de dato de una variable y lo sube al repositorio, luego otro desarrollador sincroniza el proyecto se presentan los conflictos porque aun no tiene el cambio realizado, a diferencia de un cambio a actualizar, los conflictos se presentan porque se modifico algo, mas no se agrego código nuevo.

Checkout : Con esta opción básicamente podemos descargar todo parte del proyecto almacenado en el repositorio, para tenerlo en nuestro ambiente local.

Existen muchas mas funciones importantes, pero estas son algunas que a mi parecer son fundamentales, veamos algunos ejemplos....

Synchronize.

Para sincronizar un proyecto local con el proyecto remoto seleccionamos el proyecto local y hacemos click derecho/Team/Syncrhonize With Repository.


De esta forma se habilitará la perspectiva de sincronización donde se podrá visualizar un comparativo entre las clases locales con sus respectivas clases remotas y realizar el proceso de actualizaciones si es el caso.



Como se ve en la imagen, el IDE presenta cuales son las diferencias en el código (en este caso, solo se agrego un comentario, se puede ver que en el local no existe), además brinda opciones para trabajar con esas diferencias, permitiendo que se agreguen uno a uno, todo o ninguno de los cambios.

Conflictos.

como se mencionó anteriormente, los conflictos corresponden a errores o inconsistencias entre la versión local del proyecto y la versión almacenada en el repositorio, si existen dichas inconsistencias estas son detectadas cada vez que el proyecto es sincronizado, y se pueden evidenciar cuando aparece una flecha roja en doble sentido sobre la o las clases que generan conflictos, un ejemplo de esto podría ser el cambio de nombre en variables o parámetros en el código fuente, pues estos no son identificados desde la versión local.

Cada vez que vamos a trabajar con un proyecto al cual le hacemos control de versiones, debemos sincronizarlo previamente, allí se podrá identificar si existen o no conflictos.



En la imagen anterior vemos que hay archivos marcados con una flecha azul y otros marcados como con la flecha roja en doble sentido, esto quiere decir que allí hay un conflicto.

En la siguiente imagen tenemos otro ejemplo, ingresando al archivo del conflicto se carga un panel donde podemos ver cual es la inconsistencia generada, aquí se hizo un cambio a la misma linea de código  siendo esa la causa del error, luego decidimos si se aceptan los cambios sobrescribiendo nuestro código o se rechazan.


Para resolver un conflicto deberemos hacerlo de forma manual, verificando que es lo que genera dicha inconsistencia, copiando cada fragmento de código que pueda resolver el conflicto con el botón copy current, o con copy all (marcado en las opciones de la esquina superior derecha)se copiara todo el código nuevo de la versión remota a la versión local.

otra forma de hacerlo es usando la opción Override and Update al presionar click derecho sobre el archivo, pero hay que tener mucho cuidado, pues lo que se hace es reemplazar todo nuestro código de la clase por la versión del repositorio, perdiendo lo que hayamos desarrollado......... esta es una buena opción si los cambios son pocos, y de fácil modificación, de esta forma podremos resolver el conflicto y luego subirlo al repositorio.

También tenemos Mark as Merged, esta es otra de las opciones que aparecen, lo que hacemos básicamente es mezclar nuestro código con el remoto, debemos asegurarnos que todo esta bien para hacerlo, posteriormente verificamos los cambios desde nuestro local y podemos hacer el commit.

Como Evitarlos.


Para evitar posibles conflictos se recomienda tener un correcto contacto con el equipo de trabajo y que cada cambio realizado se especifique y así los posibles conflictos sean fáciles de resolver, además siempre se recomienda sincronizar proyectos al momento de trabajar con los mismos y antes de realizar commit, garantizando así que se trabaja desde la ultima versión de la clase.

Agregar Proyecto (Checkout)

ahora se presentara un ejemplo en el que cargaremos a nuestro espacio de trabajo un proyecto que se encuentra en otro repositorio diferente al presentado inicialmente. Primero que todo deberemos estar en la perspectiva SVN Repository Exploring y allí damos click derecho/New/Repository Location






Al hacer esto se carga la ventana donde vamos a aderir el repositorio,
introducimos la url de el nuevo repositorio y presionamos finish




Realizamos el mismo proceso en el que se nos solicitara el nombre de usuario y contraseña, después de esto se cargara el nuevo repositorio tal como se muestra a continuación.


Posteriormente para agregar el nuevo proyecto a nuestro espacio de trabajo, seleccionamos el mismo, le damos click derecho/Checkout...


Después de esto se carga la siguiente ventana indicándonos cual es el proyecto
seleccionado, en ella presionamos finish


Por ultimo podremos corroborar que lo hemos cargado satisfactoriamente desde la perspectiva de Java donde encontraremos el nuevo proyecto, en el se indicara al lado de las clases, la fecha, hora y usuario que realizo las ultimas modificaciones.


Los anteriores son algunos de los conceptos básicos que se querían presentar, espero que sean de utilidad y de fácil aplicación.


También te podría Interesar. 


¿Hay algo que quieras anexar o comentar sobre esta entrada?  no dudes en hacerlo....

1 comentario:

  1. Muchas gracias por la información y la explicación dada, me sirvió mucho para el trabajo.

    ResponderEliminar

Eres libre de realizar cualquier comentario, desde que pueda ayudar con gusto lo atenderé, y si es un critica, bienvenida sea!!!