Download - Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

Transcript
Page 1: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

Sistemas de Control de VersionesSubversion

Alexis Quesada Arencibia Francisco J. Santana Pérez

Page 2: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

2© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

¿ Qué son ?

Programas que permiten gestionar un repositorio de archivos y sus distintasversiones

Utilizan una arquitectura cliente-servidorUn servidor guarda la(s) versión(es) actual(es) del proyecto y su historia

Page 3: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

3© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Nos permiten …

Varios clientes pueden sacar copias del proyecto al mismo tiempo

Realizar cambios a los ficheros manteniendo un histórico de los cambios

Deshacer los cambios hechos en un momento dadoRecuperar versiones pasadasVer históricos de cambios y comentariosLos clientes pueden también comparar diferentes versiones de archivos

Page 4: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

4© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Nos permiten …Unir cambios realizados por diferentes usuarios sobrelos mismos ficheros

Sacar una "foto" histórica del proyecto tal como se encontraba en un momento determinado

Actualizar una copia local con la última versión que se encuentra en el servidor

Esto elimina la necesidad de repetir las descargas del proyectocompleto

Mantener distintas ramas de un proyecto

Page 5: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

5© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Sistemas de control de Versiones (SCV)CVS

http://www.nongnu.org/cvs/

Subversionhttp://subversion.tigris.org/

Archhttp://www.gnu.org/software/gnu-arch/

DARCShttp://www.darcs.net/

BitKeeperhttp://www.bitkeeper.com/

Page 6: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

6© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Subversion

Sistema de control de versiones libre y de código abierto (2001)

Está construido sobre una capa de portabilidad llamada APR (la bibliotecaApache Portable Runtime)

Debería funcionar sobre cualquier SO dondelo haga el servidor httpd Apache (Windows, Linux, Mac OS X, …)

Page 7: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

7© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Subversion

Es un sistema general que puede ser usado para administrar cualquierconjunto de ficheros

Texto, imágenes, video, ejecutables, …

El repositorio en el servidor consiste en una base de datos (Berkeley DB)

Page 8: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

8© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Características

Versionado de directorios

Facilidad para añadir/eliminar/moverficheros y directorios

Envíos atómicos

Versionado de metadatos

Soporte para binarios

Page 9: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

9© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Características

Diferentes sistemas de accesofile:// acceso al sistema localhttp:// y https:// haciendo uso del módulo DAV en Apache 2svn:// para svnserve y svn+ssh:// para utilizarssh

Ramificación y etiquetado eficientes

Se envían solo las diferencias en ambasdirecciones

Page 10: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

10© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Características

Existen clientes gráficos tanto para linuxcomo para windows

Windows: tortoiseSVNhttp://tortoisesvn.tigris.org/

Windows, Linux, Mac OS: rapidsvnhttp://rapidsvn.tigris.org/

Page 11: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

11© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Arquitectura

Page 12: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

12© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Ciclo básico de trabajo

svn: programa cliente de línea de órdenes

La mejor ayuda:svn help orden

Page 13: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

13© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Ciclo básico de trabajo

Descargando un repositorio (crea unacopia en la máquina local)

svn checkout URL_REPOSITORIO

$ svn checkout http://svn.collab.net/repos/svn/trunk subvA subv/subversion.dswA subv/svn_check.dsp…Checked out revision 2499.

Page 14: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

14© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Ciclo básico de trabajo

Haciendo cambios en la copia de trabajolocal

Cambios en los ficherosNo hay que indicarle nada a subversion. Detectarálos cambios automáticamente

Cambios en el arbolAñadir/eliminar/copiar/mover ficheros y directorios

Page 15: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

15© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Ciclo básico de trabajo

Añadir/eliminar/copiar/mover ficheros y directorios

Los cambios son marcados en la copia local y serán reflejados en el repositorio cuando se envíen los cambios

$ svn add fichOdir$ svn delete fichOdir$ svn copy fichOdir1 fichOdir2$ svn move fichOdir1 fichOdir2

Page 16: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

16© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Ciclo básico de trabajoExaminando los cambios antes de enviarlos al repositorio

Se puede ejecutar en la raiz de la copia de trabajo para ver todolos cambios o en sobre una ruta o fichero esfecífica)

Page 17: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

17© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Ciclo básico de trabajoOtra forma de examinar los cambios

svn diff

Page 18: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

18© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Ciclo básico de trabajo

Me arrepiento de mis ….. (deshacer lasmodificaciones locales)

svn revert PATH

Para deshacer todo los cambios en un directorio se debe usar la opción

--recursive

Page 19: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

19© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Ciclo básico de trabajo

Enviando los cambios al repositorio

svn commit [PATH] –m “mensaje de registro”

svn commit [PATH] –F fichero_log

$ svn commit --message "Corrected number of cheese slices."Sending sandwich.txtTransmitting file data .Committed revision 3.

Page 20: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

20© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Ciclo básico de trabajo

Actualizar la copia de trabajo localsvn update

$ svn updateU foo.cU bar.cUpdated to revision 2.

U => ActualizadoA => AñadidoD => EliminadoR => ReemplazadoG => FundidoC => Conflicto

Page 21: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

21© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Ciclo básico de trabajo

Resolviendo conflictos

$ svn updateU INSTALLG READMEC bar.cUpdated to revision 46.

Actualizado !!! No hay problema

Fundido !!! Nos entendemos: ¡ tu a tus cosas y yo a las mías !

Aquí llegó la bronca !!!!

Page 22: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

22© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Ciclo básico de trabajo

Pero dicen que hablando se entiende la gente !!!

Acto de conciliación !!!Ayuda de subversion en relación a los conflictos

Nos informa (C)Coloca marcas de conflicto en el fichero para demostrarvisualmente las áreas solapadasPara cada fichero en conflicto, subversion coloca tres ficherostemporales extra en la copia de trabajo local

Filename.mine, filename.rOLDREV, filename.RNEWREV

Page 23: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

23© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Ciclo básico de trabajo

Soluciones:

Fusionar el texto en conflicto a mano

Copiar uno de los ficheros temporales sobre sufichero de trabajo

Ejecutar svn revert para eliminar los cambioslocales

Page 24: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

24© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Ciclo básico de trabajo

Subversion no permitirá enviar el fichero en conflicto hasta que los tres ficherostemporales sean borrados

Una vez solucionado el conflicto, es necesariocomunicarselo a subversion

svn resolved PATHEsto borrará los tres ficheros temporales y Subversion no considerará por mas tiempo que el fichero está en estado de conflicto

Page 25: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

25© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Ciclo básico de trabajo

Fusionar el texto en conflicto a mano$ cat sandwich.txtTop piece of breadMayonnaiseLettuceTomatoProvolone<<<<<<< .mineSalamiMortadellaProsciutto=======SauerkrautGrilled Chicken>>>>>>> .r2Creole MustardBottom piece of bread

svn resolved fichero

Page 26: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

26© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Ciclo básico de trabajo

Copiar uno de los ficheros temporales sobresu fichero de trabajo

$ svn updateC sandwich.txtUpdated to revision 2.$ ls sandwich.*sandwich.txt sandwich.txt.mine sandwich.txt.r2sandwich.txt.r1$ cp sandwich.txt.r2 sandwich.txt$ svn resolved sandwich.txt

Page 27: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

27© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Ciclo básico de trabajo

Eliminar los cambios localessvn revert ficheroSi se invierte un fichero en conflicto, no esnecesario ejecutar “svn resolved”

$ svn revert sandwich.txtReverted 'sandwich.txt'$ ls sandwich.*sandwich.txt

Page 28: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

28© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Ciclo básico de trabajo

Una vez resueltos los conflictos, enviamos loscambios

svn commit –m “mensaje”

Page 29: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

29© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Ciclo básico de trabajo

Examinando el historialMostrar información sobre los registros

svn log

Mostrar información sobre cambiossvn diff

Mostrar revisiones anteriores de ficherossvn cat

Mostrar los ficheros de un directorio para una revisiónconcreta

svn list

Page 30: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

30© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Otras órdenes útiles

Completar transacciones pendientes eliminando el estado de bloqueo

svn cleanup

Copiar un árbol de ficheros sin versionar en el repositorio, creando directorios intermedios

svn import [PATH] URL

Crear directorios en la copia local o repositoriosvn mkdir PATH_O_URL

Page 31: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

31© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Creación de ramas (branches)

svn cp ORIGEN DESTINO

svn cp file:///home/usuario/svn/holamundo/headfile:///home/usuario/svn/holamundo/ramas/holamundo-beta

Y si corregimos errores en la rama, podemosrescatarlas en la versión de desarrollo

svn merge

svn merge -r 176:177 file:///home/usuario/svn/holamundo/ramas/holamundo-beta

Page 32: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

32© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Etiquetas (tags)

svn cp ORIGEN DESTINO

$ svn cp -r 345 file:///home/usuario/svn/holamundo/ramas/holamundo-beta \file:///home/usuario/svn/holamundo/finales/1_0

$svn propset svn:read-only 1 file:///home/usuario/svn/holamundo/finales/1_0

Page 33: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

33© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Creando un repositorio

svnadmin create REPO_PATH

[aquesada@dumby svn]$ svnadmin create ./aquesada[aquesada@dumby svn]$ cd aquesada/[aquesada@dumby aquesada]$ lsconf dav db format hooks locks README.txt[aquesada@dumby aquesada]$

Page 34: Sistemas de Control de Versiones - sopa.dis.ulpgc.essopa.dis.ulpgc.es/progsis/material-didactico-practico/enunciados...Sistemas de Control de Versiones Subversion Alexis Quesada Arencibia

34© Alexis Quesada Arencibia – Francisco J. Santana Pérez Programación de Sistemas

Referenciashttp://subversion.tigris.org/

http://svnbook.red-bean.com/

http://es.wikipedia.org/wiki/Sistema_de_control_de_versi%C3%B3n

http://acm2.asoc.fi.upm.es/~chernando/doc/svn/

http://www.kikov.org/subversion-tutorial-es-index

http://josecely.tecsua.com/?p=12

http://www.escomposlinux.org/fer_y_juanjo/index.php?pag=subversion.html

http://kopernix.com/?q=svnd_como