ingeniería del software de gestión - kybele...historial de las acciones realizadas con cada...
Post on 25-Jul-2020
10 Views
Preview:
TRANSCRIPT
Herramienta de Control de Versiones :
Subversion
Elisa Herrmann Ingeniería del Software de Gestión
¿Qué es Control de Versiones?
Gestión del desarrollo de cada elemento de un proyecto a lo largo del tiempo
Proporciona:
◦ Mecanismo de almacenaje de cada elemento que deba gestionarse (archivos de código, imágenes, documentación...)
◦ Posibilidad de añadir, modificar, mover, borrar...
◦ Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior
◦ Otros: generación de informes de cambios, informes de estado, marcado con nombre identificativo, etc.
Se utiliza un repositorio, donde se almacena la información de todo el desarrollo
¿Qué es Control de Versiones?
Útil para trabajar individualmente o en
grupo
Servidor local o remoto
Permite desarrollos colaborativos,
incluso concurrentemente!
Todo equipo profesional de desarrollo
de software lo utiliza
¿Qué es Subversion?
Un software para control de versiones
Fácil de usar
Diseño simple, potente, seguro
Software Libre y gratuito
◦ Licencia APACHE/BSD
Tanto clientes y servidor, funcionan en
muchos S.O.
◦ Incluídos GNU/Linux, Windows, Mac OS, etc.
Características: Envíos atómicos
◦ Todos los cambios, o ninguno.
◦ Aporta seguridad en la integridad de los datos
Versionado de directorios
◦ Se lleva un control de cambios a través del tiempo del directorio.
◦ Sistema de archivos “virtual ” que sigue los cambios sobre árboles de directorios completos a través del tiempo
Verdadero historial de versiones
◦ Se puede añadir, borrar, copiar, y renombrar archivos y directorios.
◦ Cada fichero nuevo añadido comienza con un historial nuevo, limpio y completamente propio.
Características
Elección de las capas de red
◦ Posee abstracción del acceso al repositorio
◦ Como módulo de Apache:
Estabilidad e interoperabilidad
Autenticación, autorización, compresión de la conexión,
etc.
Puertos estándar (administradores de red agradecidos)
◦ Como servidor independiente (svnserve):
Muy ligero, habla un protocolo propio.
Puede ser encaminado fácilmente a través de un túnel
SSH.
Características Manipulación consistente de datos
◦ Encuentra diferencias usando un algoritmo en modo binario
◦ Funciona idénticamente con texto o archivos binarios.
◦ Todos los tipos de archivos se guardan comprimidos en el repositorio.
Ramificación y etiquetado eficientes
◦ El costo de crear una nuevas ramas (branch) o etiquetas (tag) no es proporcional al tamaño del proyecto
Totalmente reutilizable
◦ SVN está compuesto por bibliotecas compartidas en C con APIs claras.
◦ Hay implementaciones en distintos lenguajes (java, python, etc)
Breve historia
Comenzado a principios de 2000
(CollabNet)
Objetivo: Mejorar CVS
Versión 1.0 liberada en 2004
◦ Contemplaba todas de las funcionalidades
de CVS y muchas mejoras
La versión actual es la 1.7.0
El problema de compartir archivos
¿Cómo permitirá el
sistema a los usuarios
compartir información,
pero al mismo tiempo
impidiendo que se
sobreescriban de forma
accidental?
El problema de compartir archivos
La solución bloqueo-modificación-desbloqueo ◦ El repositorio sólo
permite a una persona modificar un archivo al mismo tiempo.
◦ Si 'Harry' ha bloqueado el archivo, entonces 'Sally' no puede hacerle cambios.
◦ Sólo puede leer el archivo y esperar a que lo desbloquee
El problema de compartir archivos
Bloquear puede causar problemas de gestión
◦ Demoras innecesarias y pérdida de tiempo.
Bloquear puede causar una serialización innecesaria
◦ Si los cambios no se solapan los usuarios podrían editar el archivo simultáneamente
Bloquear puede causar una falsa sensación de seguridad
◦ 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.
El problema de compartir archivos
La solución copiar-
modificar-mezclar
◦ Se crea una réplica local
del repositorio
◦ Los usuarios pueden
trabajar en paralelo
◦ Finalmente, todas las
copias privadas se
combinan en una nueva
versión final.
El problema de compartir archivos
¿Pero qué ocurre si los cambios de los usuarios se solapan?
◦ Se produce un conflicto
◦ Se puede resolver de tres formas:
Editando manualmente las líneas conflictivas
Eligiendo una de las versiones
O deshaciendo todos los cambios locales
El problema de compartir archivos
Conclusiones
◦ El tiempo en resolver los conflictos es mucho menor
que el tiempo perdido por un sistema de bloqueos.
◦ Los usuarios pueden trabajar en paralelo, sin tener
que esperarse el uno al otro.
◦ La mayoría de los cambios concurrentes no se
solapan en absoluto; los conflictos son poco
frecuentes
◦ Un factor crítico para la productividad: la
comunicación entre los usuarios. ¡Hay que conversar
con los compañeros!
Ciclo básico de trabajo
0) Crear copia local (checkout) ◦ Se puede especificar una revisión o fecha particular
1) Actualizar la copia de trabajo (update) ◦ Permite recuperar las últimas modificaciones del
repositorio
2) Hacer cambios ◦ Add, delete, copy, move
3) Examinar cambios ◦ status, diff, revert
4) Fusionar cambios ◦ merge, resolved
5) Enviar cambios (commit) ◦ Requiere un mensaje 'log' que detalle las modificaciones
hechas
Vocabulario básico 1/2 Copia de trabajo ◦ Es la copia local de los archivos de un repositorio,
en un momento del tiempo o revisión específicos.
Check-out (co) ◦ Crea una copia de trabajo local desde el
repositorio. Se puede especificar una revisión específica.
Commit (ci) ◦ Cuando una copia de los cambios hechos a una
copia local es integrada sobre repositorio.
Import ◦ Una importación es la acción de copiar un árbol
de directorios a uno local (que no es en ese momento una copia de trabajo) en el repositorio por primera vez.
Vocabulario básico 2/2
Actualizar (update) ◦ Una actualización integra los cambios que han
sido hechos en el repositorio (por ejemplo por otras personas) en la copia de trabajo local.
Conflicto
◦ Ocurre cuando se realizan dos cambios al mismo documento, y el sistema es incapaz de reconciliar los mismos.
Resolver
◦ La intervención del usuario para atender un conflicto entre diferentes cambios al mismo documento.
Recursos
Clientes
◦ TortoiseSVN (MS Windows)
◦ Subclipse (plugin para Eclipse, multiplataforma)
◦ RapidSVN (multiplataforma)
◦ muchos más...
Navegadores de repositorios
◦ ViewVC
◦ WebSVN
Organización de Repositorio
Por directorio
Directorios
◦ Trunk: línea principal de desarrollo.
◦ Tags: colección de snapshots del trunk (o una
branch) en un momento definido de tiempo
◦ Branches: variaciones activas del proyecto
comparado con trunk.
Repository Server The client machine
“Check out” una copia de trabajo
Check Out
Check out Existen muchas formas de realizarlo.: Una
1. Cambiar a "SVN Repository Exploring
Mode".
2. Botón derecho
New => Repository
Location
3. URL y (opcional)
información de
authentication.
Check out
Navegar el repositorio.
Seleccionar la parte con la que se quiere
trabajar (usually "trunk")
Botón derecho"Check Out as...“
Edición de Ficheros
1. Modificar.
2. Probar.
◦ No subir código con errores.
3. Commit
Comparar
Modificaciones Botón derecho=> Team => Synchronize with Repository
Perspectiva"Team Synchronize".
"Compare Editor" para comparar.
Modificaciones Se puede usar "Compare Editor" para
descargar cambios.
o botón derecho => "Update" fichero o
proyecto.
Resolver Conflictos
“Conflicto" significa que se han hecho cambios al
fichero local y la versión del repositorio ha
cambiado también.
Resolviendo Conflictos
Alternativas:
(1) Mezclar.
(2) Aceptar cambios remotos, descartar cambios locales.
(3) Sobrescribir remotos
Después de resolver los conflictos hay que marcarlos como “resueltos”.
Subversion borra las copias extras.
"Compare Editor" de la perspectiva
Synchronize.
Accept or reject changes one-by-one or
all at once.
Resolviendo Conflictos
Commit
Eclipse:
Boton derecho en el fichero o carpta=>
Commit
...
Mover, Renombrar, Borrar
Use:
svn copy oldfile newfile
svn move oldfile newfile
svn rename oldname newname
svn delete filename
No usar Windows (u otro SO) para mover o renombrar
La IDE marcará los ficheros para renombrer o
borrar en SVN.
Herramientas
Visor de Log y Gráfico de Revisión
Eclipse and Netbeans have similar tools.
ViewVC - SVN en el navegador
http://se.cpe.ku.ac.th/viewvc/d
emo
"Importando" un Proyecto
Plan Antes de importar
1. Organizar la copia local.
src/ Source code
org/
myproject/
domain/
ui/
service/
test/ Test code
org/
myproject/
dist/ Distributables
lib/ Libraries needed
Plan Antes de importar
2. Decidir que no importar.
Examples:
◦ Ficheros compilados (*.class, *.obj, *.exe)
◦ Ficheros grandes, imágenes, videos, etc.
◦ Librerías de terceros que se pueden descargar
de internet .
e.g. log4j.jar, mysql-connector-5.1.jar, ...
◦ Si se necesitan librerías de 3ros, ponerlos en
un proyecto separado
Agregar “ignorados" a un proyecto
Eclipse:
1. Boton derecho en el fichero o carpeta
2. Team => Add to svn:ignore
3. Se indica ignorado
Importar Abrir proyecto.
Team -> Share Project...
Elegir"SVN" …"Next“
"Create a new
Repository
location" o existente.
Esto crea una
ubicación en eclipse
Servidor y Protocolos
Arquitectura
Berkley DB
FSFS
Subversion Repository
Client Interface Repository Interface
GUI clients
Cmd line clients
Client Library
Working Copy Management
Library
Access Protocol
DAV
SVN
Local
Apache
mod_dav
mod_dav_svn
svnserve
"file" protocol
SSH
sshd
Intranetwork
URL y Protocolos
14/11/2011 Ing.Software de Gestión (LADE-ITIG) 63
http://myhost.com:port/path/to/repository
Protocol:
svn
svn+ssh
http
https
file
Host name or
IP address
127.0.0.1
localhost
host:8443
optional port
number
Repository
relative
path
Más recursos
Sitio oficial de Subversion
◦ http://subversion.apache.org/
Libro libre 'Control de versiones con Subversion'
◦ http://svnbook.red-bean.com/
Hosting SVN gratuito
◦ http://code.google.com/hosting
◦ http://sourceforge.net
Otros
◦ http://svn.collab.net/subclipse/help/index.jsp?topic=/
org.tigris.subversion.subclipse.doc/html/reference/t
eam-synchronize.html
Ejemplos
http://dev.eclipse.org/viewcvs/viewvc.cgi?vi
ew=roots
14/11/2011 Ing.Software de Gestión (LADE-ITIG) 66
Otros
Git
Bazaar (software)
Mercurial
Bonsai CVS
Plastic SCM
14/11/2011 Ing.Software de Gestión (LADE-ITIG) 67
top related