Subversion

4,019 views

Published on

Para la clase de Sistemas y componentes computacionales

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,019
On SlideShare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
58
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Subversion

  1. 1. Subversion Ixchel Stephanie Zazueta García 2do Semestre Ingeniería en Software
  2. 2. <ul><li>El Concurrent Versions System, es una aplicación que implementa un sistema de control de versiones: mantiene el registro de todo el trabajo y los cambios en los ficheros que forman un proyecto y permite que distintos desarrolladores colaboren. </li></ul>CVS, qué es?
  3. 3. <ul><li>Arquitectura cliente-servidor. </li></ul><ul><li>Originalmente, el servidor utilizaba un sistema operativo similar a Unix, aunque en la actualidad existen versiones de CVS en otros sistemas operativos, incluido Windows. </li></ul><ul><li>Varios clientes pueden sacar copias del proyecto al mismo tiempo. Cuando actualizan sus modificaciones, el servidor trata de acoplar las diferentes versiones. </li></ul><ul><li>Los clientes pueden también comparar diferentes versiones de archivos, solicitar una historia completa de los cambios, o sacar una &quot;foto&quot; histórica del proyecto tal como se encontraba en una fecha determinada o en un número de revisión determinado. </li></ul><ul><li>Los clientes también pueden utilizar la orden de actualización con el fin de tener sus copias al día con la última versión que se encuentra en el servidor. </li></ul><ul><li>CVS también puede mantener distintas &quot;ramas&quot; de un proyecto. Por ejemplo, una versión difundida de un proyecto de programa puede formar una rama y ser utilizada para corregir errores. </li></ul>Características
  4. 4. Historia / Limitantes <ul><li>CVS fue desarrollado por GNU. Se otorga con licencia GPL. </li></ul><ul><li>Actualmente existen muchas versiones de CVS implantadas en los diferentes sistemas operativos. </li></ul><ul><li>Limitaciones del protocolo CVS: </li></ul><ul><li>Los archivos en el repositorio sobre la plataforma CVS no pueden ser renombrados. </li></ul><ul><li>Cada archivo en cada subdirectorio debe ser eliminado y re-agregado con el nuevo nombre. </li></ul><ul><li>Soporte limitado para archivos Unicode con nombres de archivo no ASCII. </li></ul>
  5. 5. <ul><li>Fuerte integración con Apache : Esto permite definir controles de acceso avanzados y navegación vía web para consultar el deposito de archivos. </li></ul><ul><li>Transparencia al eliminar y cambiar nombres de archivos : CVS requiere intervención manual en el deposito para lograrlo, Subversion contempla esta deficiencia y la corrige con éxito. </li></ul><ul><li>Copias ligeras sobre ramificaciones : La generación de ramificaciones en CVS además de ser un proceso involucrado implica la generación de una copia nueva en el deposito, mismo mecanismo que hace crecer el tamaño del deposito, Subversion independientemente del numero de ramificaciones creadas mantiene un árbol diferencial de cambios, minimizando así el espacio consumido en el deposito. </li></ul><ul><li>Copias diferenciales de archivos binarios : Subversion es capaz de mantener un control diferencial sobre cualquier archivo binario del deposito, CVS requiere archivar copias completas de un archivo binario cada vez que éste cambia. </li></ul>SVN sobre CVS:
  6. 6. <ul><li>Es un software de sistema de control de versiones. </li></ul><ul><li>(2000 / CollabNet Inc.) </li></ul><ul><li>Es software libre bajo una licencia de tipo Apache/BSD. </li></ul><ul><li>Se le conoce también como svn por ser ese el nombre de la herramienta de línea de comandos. </li></ul><ul><li>Una característica importante es que, a diferencia de CVS , los archivos versionados no tienen cada uno un número de revisión independiente. Todo el repositorio tiene un único número de versión que identifica un estado común de todos los archivos del repositorio en cierto punto del tiempo. </li></ul>Qué es?
  7. 7. <ul><li>Se sigue la historia de los archivos y directorios a través de copias y renombrados. </li></ul><ul><li>Las modificaciones (incluyendo cambios a varios archivos) son atómicas. </li></ul><ul><li>La creación de ramas y etiquetas es una operación más eficiente; Tiene costo de complejidad constante y no lineal como en CVS. </li></ul><ul><li>Se envían sólo las diferencias en ambas direcciones. </li></ul><ul><li>Puede ser servido mediante Apache, sobre WebDAV/DeltaV. Esto permite que clientes WebDAV utilicen Subversion en forma transparente. </li></ul><ul><li>Maneja eficientemente archivos binarios. </li></ul><ul><li>Permite selectivamente el bloqueo de archivos. </li></ul><ul><li>Cuando se usa integrado a Apache permite utilizar todas las opciones que este servidor provee a la hora de autentificar archivos (SQL, LDAP, PAM, etc.). </li></ul>Características
  8. 8. <ul><li>El manejo de cambio de nombres de archivos no es completo. Lo maneja como la suma de una operación de copia y una de borrado. </li></ul><ul><li>No resuelve el problema de aplicar repetidamente parches entre ramas, no facilita el llevar la cuenta de qué cambios se han trasladado. Esto se resuelve siendo cuidadoso con los mensajes de commit. Esta carencia será corregida en la próxima versión (1.5). </li></ul>Carencias
  9. 9. Arquitectura En un extremo se encuentra un repositorio de Subversion que conserva todos los datos versionados. Al otro lado, hay un programa cliente Subversion que administra réplicas parciales de esos datos versionados (llamadas “copias de trabajo”). Entre estos extremos hay múltiples rutas a través de varias capas de acceso al repositorio (AR). Algunas de estas rutas incluyen redes de ordenadores y servidores de red que después acceden al repositorio. Otras pasan por alto la red y acceden al repositorio directamente.
  10. 10. <ul><li>Subversion está construido sobre una capa de portabilidad llamada APR (Apache Portable Runtime), lo cual significa que Subversion debería funcionar en cualquier sistema operativo donde lo haga el servidor httpd Apache. </li></ul><ul><li>La manera más sencilla de obtener Subversion es descargando un paquete binario construido para su sistema operativo. </li></ul><ul><li>Alternativamente, usted puede compilar Subversion directamente a partir del código fuente. </li></ul>Instalación
  11. 11. svn: El programa cliente de línea de comandos. svnversion: Programa para informar del estado (en términos de revisiones de los elementos presentes) de una copia de trabajo. Svnlook: Una herramienta para inspeccionar un repositorio de Subversion. Svnadmin : Herramienta para crear, modificar o reparar un repositorio de Subversion. Svndumpfilter : Un programa para filtrar el formato de salida de volcado de repositorios Subversion. mod_dav_svn : Un módulo para el servidor HTTP Apache usado para hacer que su repositorio esté disponible a otros a través de una red. Svnserve : Un servidor independiente, ejecutable como proceso demonio o invocable por SSH; otra manera de hacer que su repositorio esté disponible para otros a través de una red. Componentes de Subversion
  12. 12. Comienzo rápido Para comenzar, cree un nuevo repositorio: $ svnadmin create /path/to/repos $ ls /path/to/repos conf/ dav/ db/ format hooks/ locks/ README.txt A continuación, se crea un árbol de ficheros y directorios para importar dentro del repositorio. Su estructura debería tener tres directorios en el primer nivel de la jerarquía llamados branches,tags, y trunk: /tmp/project/branches/ /tmp/project/tags/ /tmp/project/trunk/ foo.c bar.c Makefile …
  13. 13. Comienzo rápido Una vez tenga un árbol de datos listo para continuar, se importa dentro del repositorio con el comando svn import: $ svn import /tmp/project file:///path/to/repos -m &quot;initial import&quot; Adding /tmp/project/branches Adding /tmp/project/tags Adding /tmp/project/trunk Adding /tmp/project/trunk/foo.c Adding /tmp/project/trunk/bar.c Adding /tmp/project/trunk/Makefile … Committed revision 1. $
  14. 14. Comienzo rápido Para comenzar a manipular los datos del repositorio, se necesita crear una nueva “copia de trabajo” de los datos, una especie de entorno de trabajo privado: $ svn checkout file:///path/to/repos/trunk project A project/foo.c A project/bar.c A project/Makefile … Checked out revision 1.
  15. 15. El repositorio La parte principal de Subversion es el repositorio, el cual es un almacén central de datos. El repositorio guarda información en forma de árbol de archivos. Cualquier número de clientes puede conectarse al repositorio y luego leer o escribir en esos archivos. El repositorio es una especie de servidor de archivos, pero no del tipo habitual. Lo que hace especial al repositorio de Subversion es que recuerda todos los cambios hechos sobre él.
  16. 16. Modelos de versionado El problema: Solución Bloqueo:
  17. 17. Solución copiar-modificar-mezclar:
  18. 18. Conclusión Subversion nos hubiera ayudado a hacer el trabajo de una manera más eficiente.
  19. 19. FIN.

×