control de versiones y subversion
DESCRIPTION
Charla para la Oficina de Software Libre (http://osl.ugr.es) durante la "I Jornada de Proyectos de Software Libre".TRANSCRIPT
![Page 1: Control de versiones y Subversion](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/1.jpg)
Control de versiones y Subversion
José Luis López Pino
![Page 2: Control de versiones y Subversion](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/2.jpg)
¿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 4: Control de versiones y Subversion](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/10.jpg)
Problema: sobreescritura
![Page 11: Control de versiones y Subversion](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/11.jpg)
Solución parcial: bloqueo
![Page 12: Control de versiones y Subversion](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/12.jpg)
Solución: mezclar
![Page 13: Control de versiones y Subversion](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081508/557ae00ad8b42a590b8b4d2e/html5/thumbnails/21.jpg)
Libro
Version Control with Subversion
Control de versiones con Subversion
Libre http://svnbook.red-bean.com/