Nos permitirá hacer Updates y Commit de nuestros proyectos.
Si tenemos un proyecto en un servido SVN (google code, forge.gambas-es.org, etc), lo que tenemos que hacer es
1) Descargar el proyecto en nuestro disco duro
por ejemplo:
$svn co http://forge.gambas-es.org/svn/proyectoSVN proyectoSVN
2) Arrancamos el ide de gambas3, y abrimos el proyecto: (en la captura elproyectoSVN se llama soprano)
3) Ahora nos vamos al menú Proyecto, y veremos una nueva opción:
4) Si pulsamos sobre esta nueva opción, nos muestra el siguiente formulario:
5) Podemos "actualizar" o "refrescar información", para comprobar la copia del servidor remoto:
Vemos que los botones de "Consignar" (Commit) no están disponibles
6) Hacemos algún cambio en el proyecto, y nos vamos otra vez a este formulario Proyecto/Control de Versiones".
Ahora aparecen activo el botón de Consignar y dos pestañas más.
En la primera "Cambios" podemos poner el texto que identifica el consignar, normalmente un texto corto que diga lo que se ha cambiado.
En la segunda pestaña "Cambios", podemos ver las diferencias introducidas:
7) Para hacer el Commit, tenemos que introducir nuestro usuario y clave del servidor SVN, y pulsar en el botón "Consignar".
Una vez pulsado el botón de Consignar, en la consola del Ide de Gambas, nos sale información de como ha ido el proceso. Si todo ha ido bien, pulsa "Refrescar Información", y veréis que el Remoto ya esta actualizado:
Con lo cual ya tenemos el servidor actualizado con nuestros cambios.
Nota: OJO!!!!
Si ha habido algún conflicto al subir nuestra versión, nos lo indica la consola, y habría que resolverlo desde consola.
Lo ideal, es que el trabajo entre los programadores del proyecto se reparta, para evitar trabajar en los mismos formularios/clases y módulos, así se evita tener que resolver conflictos.
En el caso de que haya conflictos, hay que revisar las lineas que los dan y/o hablar con el otro programador para ver que cambios son los que se mantienen.
Tutorial obtenido de:
http://blognticjavi.wordpress.com/2011/12/06/como-resolver-un-conflicto-en-svn/
http://www.logicaltrinkets.com/wordpress/?p=178
4) Si pulsamos sobre esta nueva opción, nos muestra el siguiente formulario:
5) Podemos "actualizar" o "refrescar información", para comprobar la copia del servidor remoto:
Vemos que los botones de "Consignar" (Commit) no están disponibles
6) Hacemos algún cambio en el proyecto, y nos vamos otra vez a este formulario Proyecto/Control de Versiones".
Ahora aparecen activo el botón de Consignar y dos pestañas más.
En la primera "Cambios" podemos poner el texto que identifica el consignar, normalmente un texto corto que diga lo que se ha cambiado.
En la segunda pestaña "Cambios", podemos ver las diferencias introducidas:
7) Para hacer el Commit, tenemos que introducir nuestro usuario y clave del servidor SVN, y pulsar en el botón "Consignar".
Una vez pulsado el botón de Consignar, en la consola del Ide de Gambas, nos sale información de como ha ido el proceso. Si todo ha ido bien, pulsa "Refrescar Información", y veréis que el Remoto ya esta actualizado:
Con lo cual ya tenemos el servidor actualizado con nuestros cambios.
Nota: OJO!!!!
Si ha habido algún conflicto al subir nuestra versión, nos lo indica la consola, y habría que resolverlo desde consola.
Lo ideal, es que el trabajo entre los programadores del proyecto se reparta, para evitar trabajar en los mismos formularios/clases y módulos, así se evita tener que resolver conflictos.
En el caso de que haya conflictos, hay que revisar las lineas que los dan y/o hablar con el otro programador para ver que cambios son los que se mantienen.
Extra: Resolver conflictos en SVN
Para explicar con mejor detalle, vamos a basarnos en un ejemplo propio y seguimos los pasos.
Primero, nos creamos un archivo test.txt, con el siguiente contenido:
test
Ahora se hace commit al repositorio:
C:\workspace\test>svn ci -m "Primera subida al SVN para conflicto"
Sending .
Sending test.txt
Transmitting file data .
Committed revision 2.
Supongamos que tenemos dos usuarios: Usuario1 y Usuario2, los cuales hacen un update:
C:\workspace\test>svn up
A test.txt
At revision 2.
Ahora Usuario1 modifica el archivo test.txt: (texto que modifica del archivo)
Usuario1 está haciendo una prueba de conflicto
Y tras ello, hace commit:
C:\workspace\test>svn ci -m "Usuario1 empezando un conflicto"
Sending .
Sending test.txt
Transmitting file data .
Committed revision 3.
En esta nueva situación, Usuario2 modifica su copia local del archivo test.txt sin saber que existe una nueva revisión de ese archivo en el repositorio:
Usuario2 creando un conflicto
Cuando intenta hacer commit, va a ver el siguiente error:
svn: Commit failed (details follow):
svn: File or directory 'test.txt' is out of date; try updating
svn: resource out of date; try updating
Así que Usuario2 realiza un update:
C:\workspace\test>svn up
Conflict discovered in 'test.txt'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options:
SVN detecta que hay un conflicto y le pide al usuario que escoja una opción. En este caso, si elegimos la opción ‘df’ nos va a mostrar los conflictos de la siguiente forma:
--- .svn/text-base/test.txt.svn-base Tue Aug 10 10:59:38 2010 +++ .svn/tmp/test.txt.2.tmp Tue Aug 10 11:33:24 2010 @@ -1 +1,3 @@ -test \ No newline at end of file +<<<<<<< .mine +test Usuario2 creando un conflictor======= +Usuario1 está haciendo una prueba de conflicto>>>>>>> .r3
Usando la opción ‘e’ se abrirá el editor de textos asociado al cliente SVN. En este caso aparecerá lo siguiente:
<<<<<<< .mine +test Usuario2 creando un conflictor======= +Usuario1 está haciendo una prueba de conflicto>>>>>>> .r3
Así podemos seleccionar nosotros mismos cómo queremos que quede el archivo resultante.
Usuario1 está haciendo una prueba de conflicto Usuario2 creando un conflicto
Guardando los cambios, aparecerán las opciones de conflicto de nuevo. Ahora usando la opción ‘r’ marcará el archivo como merged y una G. La G indica que hubo un conflicto en el archivo y ya está resuelto.
Ya lo único que falta es hacer un commit del archivo resuelto:
C:\workspace\test2>svn st M test.txt C:\workspace\test2>svn ci -m "Conflicto resuelto" Sending test.txt Transmitting file data . Committed revision 4.
Tutorial obtenido de:
http://blognticjavi.wordpress.com/2011/12/06/como-resolver-un-conflicto-en-svn/
http://www.logicaltrinkets.com/wordpress/?p=178
No hay comentarios:
Publicar un comentario