Download - Control de versiones con - QueGrande.orgquegrande.org/apuntes/EI/4/DSI/practicas/09-10/...Control de versiones con Subversion DSI 2009/10 Contenido Sistemas de control de versiones

Transcript

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Control de versiones conSubversionIntroduccion

Diseno de Sistemas de Informacion 2009/10

MADS Group - Departamento de Computacion

Vıctor M. Gulıas ([email protected])David Cabrero ([email protected])Laura Castro ([email protected])

Javier Parıs ([email protected])David Martınez ([email protected])

24 de febrero de 2010DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 1 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Contenido

1 Sistemas de control de versiones

2 Subversion: uso elemental

3 Subversion: caracterısticas avanzadas

4 Conclusiones

5 Bibliografıa

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 2 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

ConceptoSistemas de control de versiones

Un mecanismo para:

Coordinar las modificaciones de un conjuntode usuarios sobre un mismo conjunto de ficheros

Seguir el rastro de los cambios, identificando:

Quien hizo queCuando lo hizoPor que lo hizoQue mas se hizo

Por ello, tambien es de utilidad para un solodesarrollador

Recuperar versiones anteriores

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 3 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Concepto (y II)Sistemas de control de versiones

¿Como funciona?

Existe un repositorio comun (centralizado odistribuido) donde se almacenan todos loscambios/versiones

Los desarrolladores trabajan en su copia local eincorporan las modificaciones al repositorio

El sistema registra las modificaciones y loscomentarios asociados

El sistema gestiona las distintas versionesalmacenadas en el repositorio

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 4 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Concurrent Version System (CVS)Sistemas de control de versiones

Creado a partir del proyecto de Dick Grune(1986), siendo aun hoy un desarrollo activo deuso muy extendido

Tiene algunas limitaciones ligadas a su disenoinicial que empujan a su reemplazo por sistemasalternativos, que solucionan algunos de susproblemas:

Commits atomicosIdentificador de archivo distinto de la ruta dearchivoPermiten trabajo off-lineSoporte de branchs mejorado

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 5 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Alternativas a CVSSistemas de control de versiones

Arch (arch.fifthvision.net)

Gran conjunto de funcionalidadesEscrito en shell scripts

GIT (www.kernel.org/git)

Usado en el desarrollo del kernel de LinuxDistribuido, no centralizadoSubstituto de Bitkeeper

Perforce (www.perforce.com)

Comercial

Subversion (subversion.tigris.org)

Creado a semejanza de CVS, eliminado suscarencias

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 6 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Modus operandiSistemas de control de versiones

Para cada proyecto, se crea un repositorioCada desarrollador:

1 Obtiene una copia del repositorio(copia local)

2 Trabaja sobre su copia local3 Eventualmente:

Actualiza su copia local con los cambiosque otros desarrolladores han realizadoResuelve conflictosIntegra sus cambios, enviandolos alrepositorio

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 7 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Comandos basicosSubversion: uso elemental

Administrador (svnadmin)1 Crear un repositorio2 Opcionalmente: poblar el repositorio

Usuarios/desarrolladores (svn)1 Obtener una copia del repositorio2 Trabajar sobre la copia local3 Comprobar el estado del repositorio y de la

copia local4 Integrar los cambios propios al repositorio5 Actualizar la copia local con los cambios que

haya en el repositorio6 Resolver conflictos

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 8 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Creacion de un repositorioSubversion: uso elemental

En la /ruta/al/repositorio, crearemos unsubdirectorio SVN

mkdir /ruta/al/repositorio/SVN

Se usa la orden svnadmin create parainicializar el repositorio:

svnadmin create

/ruta/al/repositorio/SVN/nombre-repositorio

Se generara la estructura de gestion delrepositorio

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 9 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Creacion de un repositorio (y II)Subversion: uso elemental

Solo las ordenes svnadmin deben usarse parainteractuar con esta estructura de gestion

/ruta/al/repositorio/SVN/

nombre-repositorio/README.txt

URL del repositorio:

file:///ruta/local/al/repositorio/

SVN/nombre-repositorio

http://ruta/remota/al/repositorio/

SVN/nombre-repositorio

La estructura de directorios es libre

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 10 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Insercion de datos en el repositorioSubversion: uso elemental

Se pueden a anadir ficheros al repositorio desdecero

Pero si ya disponemos de una estructura inicial,podemos usarla para poblar el repositorio

svn import /ruta/ficheros/iniciales URL

Registro de comentarios

Variable de entorno EDITOR

SVN trata cada tipo de fichero adecuadamente(texto, binario)

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 11 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Descarga de una copia de trabajoSubversion: uso elemental

Para comenzar a trabajar es necesario descargarnuestra copia de trabajo personal

svn checkout URL [/ruta/de/trabajo]

HEAD (ultima version) del repositorio

Directorio .svn

Sobre la copia de trabajo los archivos puedenmodificarse con normalidad

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 12 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Edicion de la copia de trabajoSubversion: uso elemental

Manipulacion basica de archivos:

Anadir o eliminar ficheros del repositorio

svn add ELEMENTO

svn delete ELEMENTO

Anadir un directorio

svn mkdir RUTA

Copiar o mover ficheros

svn copy ORIGEN DESTINO

svn move ORIGEN DESTINO

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 13 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Edicion de la copia de trabajo (y II)Subversion: uso elemental

Consultar los cambios que se han hecho sobre lacopia de trabajo local

svn status (Modified, Added, Deleted. . . )

Visualizar los cambios hechos respecto a lacopia de partida

svn diff [ELEMENTO]

Descartar cualquier cambio y volver a la copiade partida

svn revert ELEMENTO

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 14 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Integracion/actualizacion decambiosSubversion: uso elemental

Actualizacion de la copia de trabajo local

svn update

Integracion de nuestras modificaciones en elrepositorio

svn commit

Es importante documentar los cambios

La nueva version debe funcionar

Consulta del registro de cambios

svn log [ELEMENTO]

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 15 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Resolucion de conflictosSubversion: uso elemental

Conflicto

Desde la descarga de la copia de trabajo (checkout)hasta el momento en que de nuevo interactuamoscon el repositorio (update/commit), otro(s)desarrollador(es) puede(n) haber modificado yconfirmado archivos tambien alterados por nosotros

Ante esta situacion, el sistema no puede decidir, nopuede corromper el repositorio:

un svn commit fallara anulando la integracionde nuestros cambios

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 16 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Resolucion de conflictos (y II)Subversion: uso elemental

Se debe ejecutar svn update, y comoconsecuencia, para cada archivo en conflicto,

en el archivo original se insertan marcadoresdel conflictose crean tres copias adicionales, conteniendo

una copia del archivo modificado (.mine)una copia del archivo en el repositorio (.rN)una copia del archivo en el momento delcheckout (.rM, con M < N)

El procedimiento a seguir consiste en resolver amano el conflicto, eliminar los tres ficherosauxiliares y finalmente integrar los cambiosdefinitivos mediante un svn commit

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 17 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Otras operacionesSubversion: uso elemental

Descarga de copias de trabajo de versionesespecıficas

svn -r 2 checkout URL [RUTA]

Comparacion de versiones concretas

svn -r 2:4 diff [ELEMENTO]

Ayuda:

svn help [COMANDO]

svnadmin help [COMANDO]

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 18 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Trabajo en redSubversion: caracterısticas avanzadas

El uso normal de Subversion involucra a unconjunto de desarrolladores distribuidos ytrabajando de forma concurrente

Aparte de los repositorios locales, es necesarioproveer de modos de acceso en red

svnserveLigero, simple, limitado. . .svn://

Apache + WebDAV

Versatil, control de acceso, SSL. . .http://

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 19 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Ramas de desarrolloSubversion: caracterısticas avanzadas

Una rama o branch en un desarrollo es una lıneade trabajo que coexiste con otras con las quecomparte un pasado comun

Ejemplo: una vez alcanzada una version establede un programa es deseable dividir el repositoriode forma que una lınea de desarrollo de dediquea pequenas correcciones sobre dicha version 1(mantenimiento), mientras que otra avance enel desarrollo de la siguiente version

svn copy RUTA RUTA-NUEVA-RAMA

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 20 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Otras herramientasSubversion: caracterısticas avanzadas

Clientes graficos

eSvn, rapidsvn, websvn, KDEsvn. . .

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 21 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Conclusiones

Practicas de la asignatura:

Descarga + ciclo de desarrollo

Problemas mas frecuentes:

Olvidarse de integrar ficheros nuevos alrepositorioIntegrar cambios que dejan al repositorio ensituacion inestable

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 22 / 23

Control de versionescon Subversion

DSI 2009/10

Contenido

Sistemas de control deversiones

Subversion: usoelemental

Subversion:caracterısticasavanzadas

Conclusiones

Bibliografıa

Bibliografıa

Mas informacion:

[svn05a] Subversion project home.http://subversion.tigris.org, 2005.

[svn05b] Version control with subversion.http://svnbook.red-bean.com, 2005.

DSI 2009/10 (UDC) Control de versiones con Subversion 24 de febrero de 2010 23 / 23