Control de versiones con Subversion <ul><li>Martín Gaitán y Pablo Martínez </li></ul><ul><li>FCEFyN, Universidad Nacional ...
Agenda <ul><li>Qué es Control de Versiones </li></ul><ul><li>Qué es Subversion </li></ul><ul><li>Características y arquite...
¿Qué es Control de Versiones? 1/2 <ul><li>Gestión del desarrollo de cada elemento de un proyecto a lo largo del tiempo </l...
¿Qué es Control de Versiones? 2/2 <ul><li>Útil para trabajar individualmente o en grupo </li></ul><ul><li>Servidor local o...
¿Qué es Subversion? <ul><li>Un software para control de versiones </li></ul><ul><li>Fácil de usar  </li></ul><ul><li>Diseñ...
Características relevantes (1/3) <ul><li>Envíos atómicos </li></ul><ul><ul><li>Todos los cambios, o ninguno. </li></ul></u...
Características relevantes (2/3) <ul><li>Elección de las capas de red </li></ul><ul><ul><li>Posee  abstracción  del acceso...
Características relevantes (3/3) <ul><li>Manipulación consistente de datos </li></ul><ul><ul><li>Encuentra  diferencias us...
Arquitectura de Subversion
Breve historia <ul><li>Comenzado a principios de 2000 (CollabNet) </li></ul><ul><li>Objetivo: Mejorar CVS </li></ul><ul><l...
El problema de compartir archivos <ul><li>¿Cómo permitirá el sistema a los usuarios  compartir información, pero al mismo ...
El problema de compartir archivos <ul><li>La solución bloqueo-modificación-desbloqueo </li></ul><ul><ul><li>El repositorio...
El problema de compartir archivos <ul><li>Bloquear puede causar problemas de gestión </li></ul><ul><ul><li>Demoras inneces...
El problema de compartir archivos <ul><li>La solución copiar-modificar-mezclar </li></ul><ul><ul><li>Se crea una réplica l...
El problema de compartir archivos <ul><li>¿Pero qué ocurre si los cambios de los usuarios se solapan? </li></ul><ul><ul><l...
El problema de compartir archivos <ul><li>Conclusiones </li></ul><ul><ul><li>El tiempo en resolver los conflictos es mucho...
Ciclo básico de trabajo <ul><li>0) Crear copia local (checkout)  </li></ul><ul><ul><li>Se puede especificar una revision o...
Vocabulario básico 1/2 <ul><li>Copia de trabajo </li></ul><ul><ul><li>Es la copia local de los archivos de un repositorio,...
Vocabulario básico 2/2 <ul><li>Actualizar (update) </li></ul><ul><ul><li>Una actualización integra los cambios que han sid...
Recursos <ul><li>Clientes </li></ul><ul><ul><li>TortoiseSVN (MS Windows) </li></ul></ul><ul><ul><li>Subclipse (plugin para...
Más recursos <ul><li>Sitio oficial de Subversion </li></ul><ul><ul><li>http://subversion.tigris.org/ </li></ul></ul><ul><l...
Upcoming SlideShare
Loading in …5
×

Control de versiones con Subversion

1,404 views

Published on

Published in: Technology
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
1,404
On SlideShare
0
From Embeds
0
Number of Embeds
18
Actions
Shares
0
Downloads
84
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Control de versiones con Subversion

  1. 1. Control de versiones con Subversion <ul><li>Martín Gaitán y Pablo Martínez </li></ul><ul><li>FCEFyN, Universidad Nacional de Córdoba </li></ul><ul><li>Junio de 2007 </li></ul>
  2. 2. Agenda <ul><li>Qué es Control de Versiones </li></ul><ul><li>Qué es Subversion </li></ul><ul><li>Características y arquitectura </li></ul><ul><li>Breve historia </li></ul><ul><li>El problema de compartir archivos </li></ul><ul><li>Ciclo básico de trabajo </li></ul><ul><li>Vocabulario básico </li></ul><ul><li>Recursos </li></ul><ul><li>Demostraciónes de diferentes clientes </li></ul><ul><li>Preguntas y comentarios finales </li></ul>
  3. 3. ¿Qué es Control de Versiones? 1/2 <ul><li>Gestión del desarrollo de cada elemento de un proyecto a lo largo del tiempo </li></ul><ul><li>Proporciona: </li></ul><ul><ul><li>Mecanismo de almacenaje de cada elemento que deba gestionarse (archivos de código, imágenes, documentación...) </li></ul></ul><ul><ul><li>Posibilidad de añardir, modificar, mover, borrar... </li></ul></ul><ul><ul><li>Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior </li></ul></ul><ul><ul><li>Otros: generación de informes de cambios, informes de estado, marcado con nombre identificativo, etc. </li></ul></ul><ul><li>Se utiliza un repositorio, donde se almacena la información de todo el desarrollo </li></ul>
  4. 4. ¿Qué es Control de Versiones? 2/2 <ul><li>Útil para trabajar individualmente o en grupo </li></ul><ul><li>Servidor local o remoto </li></ul><ul><li>Permite desarrollos colaborativos, incluso concurrentemente! </li></ul><ul><li>Todo equipo profesional de desarrollo de software lo utiliza </li></ul>
  5. 5. ¿Qué es Subversion? <ul><li>Un software para control de versiones </li></ul><ul><li>Fácil de usar </li></ul><ul><li>Diseño simple, potente, seguro </li></ul><ul><li>Software Libre y gratuito </li></ul><ul><ul><li>Licencia APACHE/BSD </li></ul></ul><ul><li>Tanto clientes y servidor, funcionan en muchos S.O. </li></ul><ul><ul><li>Incluídos GNU/Linux, Windows, Mac OS, etc. </li></ul></ul>
  6. 6. Características relevantes (1/3) <ul><li>Envíos atómicos </li></ul><ul><ul><li>Todos los cambios, o ninguno. </li></ul></ul><ul><ul><li>Aporta seguridad en la integridad de los datos </li></ul></ul><ul><li>Versionado de directorios </li></ul><ul><ul><li>Se lleva un control de cambios a través del tiempo del directorio. </li></ul></ul><ul><ul><li>Sistema de archivos “virtual ” que sigue los cambios sobre árboles de directorios completos a través del tiempo </li></ul></ul><ul><li>Verdadero historial de versiones </li></ul><ul><ul><li>Se puede añadir, borrar, copiar, y renombrar archivos y directorios. </li></ul></ul><ul><ul><li>Cada fichero nuevo añadido comienza con un historial nuevo, limpio y completamente propio. </li></ul></ul>
  7. 7. Características relevantes (2/3) <ul><li>Elección de las capas de red </li></ul><ul><ul><li>Posee abstracción del acceso al repositorio </li></ul></ul><ul><ul><li>Como módulo de Apache: </li></ul></ul><ul><ul><ul><li>Estabilidad e interoperabilidad </li></ul></ul></ul><ul><ul><ul><li>Autenticación, autorización, compresión de la conexión, etc. </li></ul></ul></ul><ul><ul><ul><li>Puertos estándar (administradores de red agradecidos) </li></ul></ul></ul><ul><ul><li>Como servidor independiente (svnserve): </li></ul></ul><ul><ul><ul><li>Muy ligero, habla un protocolo propio. </li></ul></ul></ul><ul><ul><ul><li>Puede ser encaminado fácilmente a través de un túnel SSH. </li></ul></ul></ul>
  8. 8. Características relevantes (3/3) <ul><li>Manipulación consistente de datos </li></ul><ul><ul><li>Encuentra diferencias usando un algoritmo en modo binario </li></ul></ul><ul><ul><li>Funciona idénticamente con texto o archivos binarios. </li></ul></ul><ul><ul><li>Todos los tipos de archivos se guardan comprimidos en el repo. </li></ul></ul><ul><li>Ramificación y etiquetado eficientes </li></ul><ul><ul><li>El costo de crear una nuevas ramas (branch) o etiquetas (tag) no es proporcional al tamaño del proyecto </li></ul></ul><ul><ul><li>Se usa un mecanismo similar al 'enlace duro' (“acceso directo”) </li></ul></ul><ul><li>Totalmente reutilizable </li></ul><ul><ul><li>SVN está compuesto por bibliotecas compartidas en C con APIs claras. </li></ul></ul><ul><ul><li>Hay implementaciones en distintos lenguajes (java, python, etc) </li></ul></ul>
  9. 9. Arquitectura de Subversion
  10. 10. Breve historia <ul><li>Comenzado a principios de 2000 (CollabNet) </li></ul><ul><li>Objetivo: Mejorar CVS </li></ul><ul><li>Versión 1.0 liberada en 2004 </li></ul><ul><ul><li>Contemplaba todas de las funcionalidades de CVS y muchas mejoras </li></ul></ul><ul><li>La versión actual es la 1.4.3 </li></ul><ul><li>Grandes proyectos y empresas lo adoptaron </li></ul><ul><ul><li>KDE, GCC, Python, Samba, Mono, PuTTy, Zope, Plone, CUPS... </li></ul></ul><ul><ul><li>Google y Sourceforge lo ofrecen como servicio </li></ul></ul><ul><ul><li>¿Y vos?... </li></ul></ul>
  11. 11. El problema de compartir archivos <ul><li>¿Cómo permitirá el sistema a los usuarios compartir información, pero al mismo tiempo impidiendo que se sobreescriban de forma accidental? </li></ul>
  12. 12. El problema de compartir archivos <ul><li>La solución bloqueo-modificación-desbloqueo </li></ul><ul><ul><li>El repositorio sólo permite a una persona modificar un archivo al mismo tiempo. </li></ul></ul><ul><ul><li>Si 'Harry' ha bloqueado el archivo, entonces 'Sally' no puede hacerle cambios. </li></ul></ul><ul><ul><li>Sólo puede leer el archivo y esperar a que lo desbloquee </li></ul></ul>
  13. 13. El problema de compartir archivos <ul><li>Bloquear puede causar problemas de gestión </li></ul><ul><ul><li>Demoras innecesarias y pérdida de tiempo. </li></ul></ul><ul><li>Bloquear puede causar una serialización innecesaria </li></ul><ul><ul><li>Si los cambios no se solapan los usuarios podrían editar el archivo simultáneamente </li></ul></ul><ul><li>Bloquear puede causar una falsa sensación de seguridad </li></ul><ul><ul><li>Cuando hay una dependencia entre varios archivos, no se soluciona nada bloqueando sólo uno, ya que una dependencia puede cambiar y el proyecto pierde integridad. </li></ul></ul>
  14. 14. El problema de compartir archivos <ul><li>La solución copiar-modificar-mezclar </li></ul><ul><ul><li>Se crea una réplica local del repositorio </li></ul></ul><ul><ul><li>Los usuarios pueden trabajar en paralelo </li></ul></ul><ul><ul><li>Finalmente, todas las copias privadas se combinan en una nueva versión final. </li></ul></ul>
  15. 15. El problema de compartir archivos <ul><li>¿Pero qué ocurre si los cambios de los usuarios se solapan? </li></ul><ul><ul><li>Se produce un conflicto </li></ul></ul><ul><ul><li>Se puede resolver de tres formas: </li></ul></ul><ul><ul><ul><li>Editando manualmente las lineas conflictivas </li></ul></ul></ul><ul><ul><ul><li>Eligiendo una de las versiones </li></ul></ul></ul><ul><ul><ul><li>O deshaciendo todos los cambios locales </li></ul></ul></ul>
  16. 16. El problema de compartir archivos <ul><li>Conclusiones </li></ul><ul><ul><li>El tiempo en resolver los conflictos es mucho menor que el tiempo perdido por un sistema de bloqueos. </li></ul></ul><ul><ul><li>Los usuarios pueden trabajar en paralelo, sin tener que esperarse el uno al otro. </li></ul></ul><ul><ul><li>La mayoría de los cambios concurrentes no se solapan en absoluto; los conflictos son poco frecuentes </li></ul></ul><ul><ul><li>Un factor crítico para la productividad: la comunicación entre los usuarios. ¡Hay que conversar con los compañeros! </li></ul></ul>
  17. 17. Ciclo básico de trabajo <ul><li>0) Crear copia local (checkout) </li></ul><ul><ul><li>Se puede especificar una revision o fecha particular </li></ul></ul><ul><li>1) Actualizar la copia de trabajo (update) </li></ul><ul><ul><li>Permite recuperar las ultimas modificaciones del repositorio </li></ul></ul><ul><li>2) Hacer cambios </li></ul><ul><ul><li>Add, delete, copy, move </li></ul></ul><ul><li>3) Examinar cambios </li></ul><ul><ul><li>status, diff, revert </li></ul></ul><ul><li>4) Fusionar cambios </li></ul><ul><ul><li>merge, resolved </li></ul></ul><ul><li>5) Enviar cambios (commit) </li></ul><ul><ul><li>Requiere un mensaje 'log' que detalle las modificaciones hechas </li></ul></ul>
  18. 18. Vocabulario básico 1/2 <ul><li>Copia de trabajo </li></ul><ul><ul><li>Es la copia local de los archivos de un repositorio, en un momento del tiempo o revisión específicos. </li></ul></ul><ul><li>Check-out (co) </li></ul><ul><ul><li>Crea una copia de trabajo local desde el repositorio. Se puede especificar una revisión específica. </li></ul></ul><ul><li>Commit (ci) </li></ul><ul><ul><li>Cuando una copia de los cambios hechos a una copia local es integrada sobre repositorio. </li></ul></ul><ul><li>Import </li></ul><ul><ul><li>Una importación es la acción de copiar un árbol de directorios local (que no es en ese momento una copia de trabajo) en el repositorio por primera vez. </li></ul></ul>
  19. 19. Vocabulario básico 2/2 <ul><li>Actualizar (update) </li></ul><ul><ul><li>Una actualización integra los cambios que han sido hechos en el repositorio (por ejemplo por otras personas) en la copia de trabajo local. </li></ul></ul><ul><li>Conflicto </li></ul><ul><ul><li>Ocurre cuando se realizan dos cambios al mismo documento, y el sistema es incapaz de reconciliar los mismos. </li></ul></ul><ul><li>Resolver </li></ul><ul><ul><li>La intervención del usuario para atender un conflicto entre diferentes cambios al mismo documento. </li></ul></ul>
  20. 20. Recursos <ul><li>Clientes </li></ul><ul><ul><li>TortoiseSVN (MS Windows) </li></ul></ul><ul><ul><li>Subclipse (plugin para Eclipse, multiplataforma) </li></ul></ul><ul><ul><li>RapidSVN (multiplataforma) </li></ul></ul><ul><ul><li>Qsvn (Linux/KDE) </li></ul></ul><ul><ul><li>muchos más... </li></ul></ul><ul><li>Navegadores de repositorios </li></ul><ul><ul><li>ViewVC </li></ul></ul><ul><ul><li>WebSVN </li></ul></ul><ul><li>Sistemas integrados </li></ul><ul><ul><li>Trac: SVN+wiki+gestión de bugs </li></ul></ul>
  21. 21. Más recursos <ul><li>Sitio oficial de Subversion </li></ul><ul><ul><li>http://subversion.tigris.org/ </li></ul></ul><ul><li>Libro libre 'Control de versiones con Subversion' </li></ul><ul><ul><li>http://svnbook.red-bean.com/ </li></ul></ul><ul><li>Hosting SVN gratuito </li></ul><ul><ul><li>http://code.google.com/hosting </li></ul></ul><ul><ul><li>http://sourceforge.net </li></ul></ul><ul><ul><li>¿proximamente la facu? </li></ul></ul><ul><li>Dónde encontrar esta presentación </li></ul><ul><ul><li>En la página de la carrera </li></ul></ul><ul><ul><li>http://www.efn.unc.edu.ar/escuelas/computacion/ </li></ul></ul>

×