Download - Control de versiones y Subversion

Transcript
Page 1: Control de versiones y Subversion

Control de versiones y Subversion

José Luis López Pino

Page 2: Control de versiones y Subversion

¿Qué es el control de versiones?

”El control de versiones es el arte del manejo de los cambios en la información”.

Herramienta crítica para los programadores. Facilita volver a una versión anterior. Facilita el trabajo colaborativo. Se envían sólo las diferencias realizadas. El control de versiones no sólo es necesario

para el software.

Page 3: Control de versiones y Subversion

Clasificación

http://www.infoq.com/articles/dvcs-guide

Page 4: Control de versiones y Subversion

Clasificación: centralizados

Un poco más sencillos de utilizar que los distribuidos.

Se tiene un control total sobre las versiones. Limitaciones en el acceso. Puede haber menos conflictos a resolver. Ejemplos: CVS y Subversion.

Page 5: Control de versiones y Subversion

Clasificación: distribuidos

Se puede trabajar de forma local. Operaciones locales más rápidas. No necesitas permiso para participar en los

proyectos. No se depende de una sola máquina física. Puedes seguir teniendo un control centralizado

del proyecto. Ejemplos: Git, Bazaar y Mercurial.

Page 6: Control de versiones y Subversion

Herramientas

svn Cliente de línea de comandos. svnversion Estado de la copia de trabajo. svnlook Inspeccionar un repositorio. svnadmin Crear, modificar o reparar repos. svnserve Servidor.

Page 7: Control de versiones y Subversion

Acciones comunes

Revisión (revision):Es una “instantánea” del repositorio en un momento particular en el tiempo, cada vez que el servidor acepta un envío se crea una nueva revisión.Para identificarlas se utilizan números desde el 0.

Copia de trabajo (working copy):Copia local y privada de los archivos y directorios del repositorio. A ella se incorporarán los cambios o pondrán a disposición los tuyos cuando tú se lo indiques.

Page 8: Control de versiones y Subversion

Acciones comunes Crear copia de trabajo svn checkout Ver diferencias svn diff Deshacer cambios locales svn revert Subir nueva versión svn commit Sincronizar con repos. svn update Mensajes de log svn log Gestionar ficheros svn add | delete Copiar Mover svn move | copy Ver ficheros modificados svn status ¡Ayuda! svn help

Page 9: Control de versiones y Subversion

Estructura común del repositorio

Hay maneras estándar recomendadas para organizar un repositorio.

/trunk contendrá la “línea principal” /branches copias de las ramas /tags copias de las etiquetas

Page 10: Control de versiones y Subversion

Problema: sobreescritura

Page 11: Control de versiones y Subversion

Solución parcial: bloqueo

Page 12: Control de versiones y Subversion

Solución: mezclar

Page 13: Control de versiones y Subversion

Conflictos

Cuando se produce conflicto nos encontramos: filename.mine ”Mi” archivo filename.rOLDREV Versión original de la mía. filename.rNEWREV Versión actual en el repos.

$ svn updateU INSTALL ActualizadoG README UnidoC bar.c ¡Conflicto!Updated to revision 46.

Page 14: Control de versiones y Subversion

Solucionando conflictos

Tenemos tres opciones: Fusionar el texto en conflicto “a mano” y marcar el

conflicto como resuelto (svn resolved). Copiar uno de los ficheros temporales sobre su

fichero de trabajo y marcar como resuelto. Eliminar cambios locales (svn revert).

Page 15: Control de versiones y Subversion

Ramas

Rama (branch):Línea de desarrollo que existe de forma independiente a otra, pero comparte una historia común si mira suficientemente atrás en el tiempo.

Page 16: Control de versiones y Subversion

Ramas

Subversion tiene comandos para ayudarle a mantener ramas paralelas de sus ficheros y directorios.

Nos evitan duplicar cambios en varias ramas. Permiten mezclar y probar diferentes líneas de

desarrollo en su trabajo diario.

Page 17: Control de versiones y Subversion

Operaciones con ramas

Crear una rama svn copy Unir dos fuentes svn merge Ver diferencias antes de unir svn diff Trasladarnos a otra rama svn switch

Page 18: Control de versiones y Subversion

Etiquetas

Al igual que las ramas, las creamos con svn copy

Etiqueta (tag):Una etiqueta no es más que una instantánea (snapshot) del proyecto en un momento de tiempo.Realmente cada revisión ya es una instantánea, pero con las etiquetas le ponemos nombres más bonitos y pueden ser de sólo un subdirectorio.

En subversion, una etiqueta es realmente una nueva rama que creamos y lo almacenamos en un lugar diferente (/tags) y no realizamos cambios en ella.

Page 19: Control de versiones y Subversion

Clientes visuales

RabbitVCS (Nautilus) KDESvn (Konqueror) TortoiseSVN (Windows) RapidSVN (Linux, Windows y MacOS) Cliente integrado con los distintos EDS.

Page 20: Control de versiones y Subversion

Servidores externos

http://forja.rediris.es/ http://code.google.com/hosting/ http://sourceforge.net/ http://www.xp-dev.com/ http://savannah.gnu.org/

Page 21: Control de versiones y Subversion

Libro

Version Control with Subversion

Control de versiones con Subversion

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