Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada...

44
Herramienta de Control de Versiones : Subversion Elisa Herrmann Ingeniería del Software de Gestión

Transcript of Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada...

Page 1: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

Herramienta de Control de Versiones :

Subversion

Elisa Herrmann Ingeniería del Software de Gestión

Page 2: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

¿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

Page 3: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

¿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

Page 4: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

¿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.

Page 5: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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.

Page 6: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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.

Page 7: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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)‏

Page 8: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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

Page 9: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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?

Page 10: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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

Page 11: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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.

Page 12: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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.

Page 13: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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

Page 14: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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!

Page 15: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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

Page 16: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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.

Page 17: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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.

Page 18: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

Recursos

Clientes

◦ TortoiseSVN (MS Windows)‏

◦ Subclipse (plugin para Eclipse, multiplataforma)‏

◦ RapidSVN (multiplataforma)‏

◦ muchos más...

Navegadores de repositorios

◦ ViewVC

◦ WebSVN

Page 19: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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.

Page 20: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

Repository Server The client machine

“Check out” una copia de trabajo

Check Out

Page 21: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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.

Page 22: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

Check out

Navegar el repositorio.

Seleccionar la parte con la que se quiere

trabajar (usually "trunk")

Botón derecho"Check Out as...“

Page 23: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

Edición de Ficheros

1. Modificar.

2. Probar.

◦ No subir código con errores.

3. Commit

Comparar

Page 24: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

Modificaciones Botón derecho=> Team => Synchronize with Repository

Perspectiva"Team Synchronize".

"Compare Editor" para comparar.

Page 25: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

Modificaciones Se puede usar "Compare Editor" para

descargar cambios.

o botón derecho => "Update" fichero o

proyecto.

Page 26: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

Resolver Conflictos

“Conflicto" significa que se han hecho cambios al

fichero local y la versión del repositorio ha

cambiado también.

Page 27: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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.

Page 28: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

"Compare Editor" de la perspectiva

Synchronize.

Accept or reject changes one-by-one or

all at once.

Resolviendo Conflictos

Page 29: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

Commit

Eclipse:

Boton derecho en el fichero o carpta=>

Commit

...

Page 30: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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.

Page 31: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

Herramientas

Page 32: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

Visor de Log y Gráfico de Revisión

Eclipse and Netbeans have similar tools.

Page 33: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

ViewVC - SVN en el navegador

http://se.cpe.ku.ac.th/viewvc/d

emo

Page 34: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

"Importando" un Proyecto

Page 35: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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

Page 36: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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

Page 37: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

Agregar “ignorados" a un proyecto

Eclipse:

1. Boton derecho en el fichero o carpeta

2. Team => Add to svn:ignore

3. Se indica ignorado

Page 38: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

Importar Abrir proyecto.

Team -> Share Project...

Elegir"SVN" …"Next“

"Create a new

Repository

location" o existente.

Esto crea una

ubicación en eclipse

Page 39: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

Servidor y Protocolos

Page 40: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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

Page 41: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

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

Page 43: Ingeniería del Software de Gestión - Kybele...Historial de las acciones realizadas con cada elemento pudiendo volver a un estado anterior ... Hay implementaciones en distintos lenguajes

Ejemplos

http://dev.eclipse.org/viewcvs/viewvc.cgi?vi

ew=roots

14/11/2011 Ing.Software de Gestión (LADE-ITIG) 66