Control de versiones y Subversion

3,984 views
3,810 views

Published on

Charla para la Oficina de Software Libre (http://osl.ugr.es) durante la "I Jornada de Proyectos de Software Libre".

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,984
On SlideShare
0
From Embeds
0
Number of Embeds
19
Actions
Shares
0
Downloads
144
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Control de versiones y Subversion

  1. 1. Control de versiones y Subversion José Luis López Pino
  2. 2. ¿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.
  3. 3. Clasificación http://www.infoq.com/articles/dvcs-guide
  4. 4. 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.
  5. 5. 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.
  6. 6. 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.
  7. 7. Acciones comunes 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. 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.
  8. 8. 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
  9. 9. 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
  10. 10. Problema: sobreescritura
  11. 11. Solución parcial: bloqueo
  12. 12. Solución: mezclar
  13. 13. Conflictos $ svn update U INSTALL Actualizado G README Unido C bar.c ¡Conflicto! Updated to revision 46.  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.
  14. 14. 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).
  15. 15. 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.
  16. 16. 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.
  17. 17. 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
  18. 18. Etiquetas 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.  Al igual que las ramas, las creamos con svn copy
  19. 19. Clientes visuales  RabbitVCS (Nautilus)  KDESvn (Konqueror)  TortoiseSVN (Windows)  RapidSVN (Linux, Windows y MacOS)  Cliente integrado con los distintos EDS.
  20. 20. Servidores externos  http://forja.rediris.es/  http://code.google.com/hosting/  http://sourceforge.net/  http://www.xp-dev.com/  http://savannah.gnu.org/
  21. 21. Libro  Version Control with Subversion  Control de versiones con Subversion  Libre  http://svnbook.red-bean.com/

×