control de versiones con - quegrande.orgquegrande.org/apuntes/ei/4/dsi/practicas/09-10/...control de...
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