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
Control de versiones y Subversion
José Luis López Pino
¿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.
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.
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.
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.
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.
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
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
Problema: sobreescritura
Solución parcial: bloqueo
Solución: mezclar
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.
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).
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.
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.
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
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.
Clientes visuales
RabbitVCS (Nautilus) KDESvn (Konqueror) TortoiseSVN (Windows) RapidSVN (Linux, Windows y MacOS) Cliente integrado con los distintos EDS.
Servidores externos
http://forja.rediris.es/ http://code.google.com/hosting/ http://sourceforge.net/ http://www.xp-dev.com/ http://savannah.gnu.org/
Libro
Version Control with Subversion
Control de versiones con Subversion
Libre http://svnbook.red-bean.com/