1 copyright procesix inc. cualquier copia u otro uso debe ser autorizado expresamente por procesix...

65
1 ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Proc esix 2012 Desa rrol lo con Subv ersi on Control de Versiones con Subversión Versión Desarrolladores/Usuarios Lenin David Lozano Argel Consultor Procesix Colombia Enero de 2012

Upload: eufemia-zamarron

Post on 03-Feb-2015

5 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

1ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Control de Versiones con SubversiónVersión Desarrolladores/Usuarios

Lenin David Lozano ArgelConsultor

Procesix ColombiaEnero de 2012

Page 2: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

2ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Objetivos, Presentación

Objetivo: Aprender el uso del sistema de control de versiones Subversion, desde

la perspectiva de uso por parte de un desarrollador.

Presentación Quien es? En que plataforma trabaja? Lenguaje, IDE? Para que cree que usará Subversion? Experiencia con VCS? Que sabe de Subversion?

Plan detallado

Page 3: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

3ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

PREGUNTAS?

Gracias!!!!

Page 4: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

4ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Agenda

Control de Versiones Conceptos Básicos

Copia de trabajo Repositorio …

Ciclo estándar Branching y Merging Buenas practicas Eclipse

Page 5: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

5ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

INTRODUCCIÓN A SUBVERSION

Subversion para desarrolladores

Duración: 1 hora

Page 6: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

6ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Control de Versiones

Una forma de manejar la complejidad de los proyectos de software es a través de los sistemas de control de versiones.

Llega un punto en el desarrollo de proyectos en el cual…. Hay cuellos de botella en la comunicación. Conocer la ultima versión es crucial. Se llega a una duplicación de esfuerzo. Se presentan sobreescrituras.

Aka Control de Revisiones, aka Control de Código Fuente. Permite almacenar los resultados del proyecto en una ubicación central. Permite hacer seguimiento a los archivos en el tiempo. Cuando se comete un error se puede fácilmente regresar a una versión

anterior que sea correcta. No es una forma de backup, ni de paso de información entre

desarrolladores.

Page 7: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

7ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Entonces que es?

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. Posibilidad de añadir, modificar, mover, borrar… Historial de las acciones realizadas con cada elemento pudiendo volver

a su estado anterior. Otros: Generación de informes de cambio, informes de estado, marcado

con nombre identificativo.

Se utiliza un repositorio, donde se almacena la información de todo el desarrollo.

Útil para trabajar individualmente o en grupo. Servidor Local o Remoto. Permite desarrollos colaborativos. TODO EQUIPO PROFESIONAL DE DESARROLLO LO UTILIZA

Page 8: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

8ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Por que lo necesitamos?

Es bueno trabajar con carpetas compartidas? Si, pero no es escalable en los proyectos. Microsoft tiene su Windows 7 en una carpeta llamada

“Windows_7_201010”?

Los proyectos grandes que requieren cambios constantes con muchos desarrolladores requieren un SCV para realizar seguimiento a los cambios y evitar el caso general.

Para qué? Necesitas un archivo de Febrero 15 de 2001. Respaldo y Recuperación. Las personas pueden tener la ultima versión. Sincronización. Se dañó un archivo con el que se estaba jugando?. Deshacer cambios. Se hizo un cambio hace un año y tenia un bug. Deshacer cambios

remotos. Dejar mensajes del cambio que fue realizado. Seguimiento a cambios. Saber quien hizo un cambio. Seguimiento a realizadores de cambios. Puedes hacer cambios locales sin afectar a otros. Caja de arena. Modificaciones aisladas del código principal. Branching.

Page 9: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

9ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Modelos de Versionamiento

Misión Principal Habilitar la edición colaborativa y compartir datos.

Cómo se puede compartir información pero prevenir que se pisen las mangueras?

Page 10: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

10ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Modelo Bloqueante

Bloqueante (Lock – Modify –Unlock) En algunos sistemas como VSS, se usa este esquema.

Page 11: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

11ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Problemas del bloqueo

Bloquear puede causar problemas de gestión. Demoras innecesarias y pérdida de tiempo.

Bloquear puede causar una secuencialización innecesaria. Así los cambios no se solapen, dos o mas usuarios no pueden 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: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

12ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Modelo No Bloqueante

No bloqueante (Copy – Modify – Merge) Si dos usuarios han recuperado del servidor 2 copias de trabajo que

contienen el mismo archivo, nada les prohíbe a ellos que realicen cambios sobre el archivo.

Puede ser raro, ya que no hay garantía de que los cambios no entren en conflicto.

Page 13: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

13ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Y si los cambios se solapan?

Se produce un conflicto

Se puede resolver de 3 formas Editando manualmente las líneas conflictivas.

Eligiendo una de las versiones.

Deshaciendo todos los cambios locales.

El tiempo de resolver un conflictoes mucho menor que el tiempo del bloqueo.

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 critico para la productividad: La comunicación entre los usuarios. ¡Hay que conversar con los compañeros!

Page 14: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

14ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Taller sobre conceptos de Subversion

Duración del taller 15 minutos

Desarrollo de la evaluación. Realice una investigación de los sistemas de control de versiones Visual

Source Safe, GIT y Subversion y analice sus diferencias, ventajas y desventajas para su trabajo actual

Describa un escenario donde un modelo bloqueante de Control de Versiones sea mas adecuado que un modelo no bloqueante

Page 15: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

15ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

TERMINOLOGIA

Subversion para desarrolladores

Duración: 1/2 hora

Page 16: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

16ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Terminología - El Repositorio

Es el núcleo principal del sistema subversion. Es el almacenamiento central de los datos del sistema. Usualmente se almacena como un árbol.

Jerarquía de archivos y directorios. Cualquier cantidad de clientes se conectan al directorio

como una arquitectura cliente – servidor. Es una clase de servidor de archivos

Pero, a medida que los archivos cambian, el repositorio recuerda cada versión de esos archivos.

Manejar histórico Se obtiene cualquier versión del archivo.

Page 17: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

17ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Terminología – Working Copies

Es la copia local de los archivos de un repositorio, en un momento del tiempo o revisión especifico.

Cómo el usuario de un sistema de control de versiones interactúa con un repositorio lleno de varias versiones de un archivo concreto?

Cómo los programas con que se trabajan acceden a estos archivos?

La respuesta es la Copia Local de Trabajo. Es una versión local o una copia local de una versión particular con la

cual el usuario es libre para trabajar. Es responsabilidad del cliente SVN llevar estos cambios nuevamente al

repositorio.

Page 18: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

18ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Working Copies

Es un directorio común en el sistema local. Contiene un grupo de archivos. Es el área privada propia. No se incorporan cambios desde Subversion, a menos que lo hagas

explicito. Se pueden tener múltiples copias del mismo proyecto.

También contiene archivos extras Un subdirectorio llamado .svn – Directorio administrativo de SVN.

Cómo trabaja? Por cada archivo se guardan 2 cosas:

• Sobre que revisión está basado el archivo (working revision)• Estampa de tiempo, guardando la ultima vez que fue

actualizado por el repositorio.

Page 19: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

19ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Working Copies – Estados

Con los archivos administrativos y por medio de consultas al repositorio se pueden tener 4 estados.

No modificada, y actual.

• El archivo no se ha modificado en la copia de trabajo. Y no hay cambios en el repositorio. Este archivo no se toca.

Modificada Localmente, y actual.

• Ha sido cambiada localmente, y no se han hecho cambios en el repositorio desde la actualización. Con commit, se almacenan los cambios.

No modificada, y desactualizada.

• No ha sido cambiado localmente pero se han hecho cambios en el repositorio. Se debe hacer un svn update.

Modificada localmente, y desactualizada.

• Se ha cambiado el archivo localmente y en el repositorio. Un commit fallaría, y es necesario actualizar. Se pueden presentar conflictos.

Page 20: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

20ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Terminología – Revisiones

Cuando un repositorio acepta un cambio, crea un nuevo estado en árbol del sistema de archivos, llamado una REVISION.

Cada revisión tiene un numero único. Es un numero mayor a la revisión anterior. La revisión inicial se numera con 0 y es el directorio raíz vacio.

A diferencia de otros VCS, en subversión los números de revisión son para el árbol, no para archivos particulares.

Page 21: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

21ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Terminología – Rama (Branch)

Líneas de desarrollo independientes a otras, pero comparten una historia común si se mira lo suficientemente atrás en el tiempo.

Page 22: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

22ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Terminología – Etiquetas (Tags)

Es una rama sobre la que NO se incluyen cambios. (Línea Base***).

Contiene el código y archivos de una revisión especifica.

Se etiqueta la revisión para establecer un hito en la línea de desarrollo.

Page 23: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

23ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Aprender la lengua SVN

Conceptos Básicos Repositorio (repo): La base de datos para almacenar archivos. Servidor: El computador que almacena el repo. Cliente: El computador que se conecta al repo. Working Set/Working Copy: Directorio local de archivos, donde se

hacen los cambios. Trunk/Tronco/Main: La ubicación principal del código en el repositorio.

Pensar como un arbol genealógico. HEAD: La última revisión en el repo. ChangeLog/Historia: Lista de cambios hechos a un archivo. Sync: Sincronizar los archivos con lo ultimo en el repo. Revert: Recargar la ultima versión del repo, sobreescribiendo cambios. Delta/Diff: Encontrar la diferencia entre dos archivos, puede ser 2

revisiones. Merge/Parche: Aplicar los cambios de un archivo en otro. Conflicto: Cuando los cambios pendientes a un archivo se contradicen

entre si. Resolver: Arreglar los cambios que se contradicen. Locking/Bloquear: Tomar el control de un archivo para que nadie

pueda editarlo.

Page 24: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

24ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Taller sobre conceptos de subversion

Duración del taller 15 minutos

Desarrollo de la evaluación.

Page 25: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

25ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

GESTIÓN DEL REPOSITORIO

Subversion para desarrolladores

Duración: 1/2 hora

Page 26: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

26ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Planear la organización del repositorio

Cual es la mejor forma de organizar un repositorio? Usar un solo repositorio para múltiples proyectos Dar a cada proyecto su propio repositorio. Combinación de los 2. Seguir las buenas practicas.

Page 27: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

27ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Donde y como establecer el repositorio

Es una pregunta obligatoria, Donde van a vivir las cosas? Además, Cómo será accedido el repositorio? Por quienes será accedido?

Un repositorio por producto/proyecto/línea de producto Generalmente, cuando se esperan diferentes privilegios de acceso

Un solo repositorio para todo Si no se requiere control de acceso por proyecto/producto Especialmente si se requiere copiar o compartir archivos (código) entre

proyectos. Recomendación: USAR VENDOR BRANCHES

No se debe crear el repositorio en un directorio compartido en red.

No puede existir en un filesystem NFS, AFS o Samba.

Page 28: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

28ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Organización de Repositorio

Crear una jerarquía inicial de directorios Crear 3 directorios debajo del raíz: TRUNK – Desarrollo principal BRANCHES – Ramas de la línea principal de desarrollo TAGS – Ramas que pueden ser destruidas.

No hay una obligación para un layout del repositorio

Creación Se puede usar snv mkdir o svn import (con un layout creado localmente)

$ mkdir tmpdir$ cd tmpdir$ mkdir projectA$ mkdir projectA/trunk

$ svn import . file:///path/to/repos --message 'Initial repository layout‘Adding projectAAdding projectA/trunk

Page 29: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

29ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Donde se ubica el layout?

Se crean los directorios trunk, tags, branches al nivel donde el código deba ser entregado como un paquete único

Donde se crea la versión de producto No es critico tenerlo bien al principio.

Se puede trabajar con la idea de una “Raíz de Proyecto” Es el punto de anclaje del proyecto Contiene los 3 directorios Un solo repositorio puede tener una “raíz de proyecto” o varias

Page 30: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

30ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Taller

Objetivo: Estudiar las estructuras de los proyectos actuales en la organización.

Duración: 15 minutos Socialización: 10 minutos

Analizar las ventajas y desventajas de cada esquema. Plantear una solución en la organización

Page 31: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

31ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

CICLO DE TRABAJO

Subversion para desarrolladores

Duración: 2 horas

Page 32: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

32ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Ciclo de trabajo con Subversion

Actualizar la copia de trabajo

Hacer los cambios

Revisar los cambios

Corregir los errores

Resolver cualquier conflicto

Publicar los cambios

Page 33: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

33ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Importar archivos y directorios

Operación para introducir en el repositorio la primera revisión de un proyecto.

La operación puede realizarse situándose el usuario en el directorio local que contiene la primera revisión

Se crean los directorios intermedios que sean necesarios. Con el import no se requiere una Working Copy y los archivos son

inmediatamente confirmados en el repositorio Es una buena idea que el import inicial contenga únicamente la

estructura de directorios que se utilizará posteriormente (los directorios trunk, branches y tags)

Pero si no el import se debe realizar sobre el trunk

$ svn import /path/to/mytree \ http://host.example.com/svn/repo/some/project/trunk \ -m “Import inicial“

Hay que tener en cuenta que después de un import, el directorio original local, NO es convertido a una Working Copy. Hay que hacer un check out para poder trabajar.

Page 34: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

34ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Taller Ciclo de Trabajo con Subversion

Duración del taller 10 mins

Desarrollo del taller Teniendo en cuenta el taller anterior, crear la estructura base, coodinar

con los otros compañeros. Cada persona tendrá su propia aplicación Llevar el proyecto de ejemplo, o algún código personal al repositorio en

la ubicación correspondiente

Page 35: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

35ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Creando una copia de trabajo

En realidad, para trabajar con Subversion se debe verificar o sacar del repositorio los archivos

Check out, edit y check in. El ciclo se ve.

Se puede revertir el cambio usando el comando revert.

Tronco principal

ArrozHuevosSopa

ArrozHuevos

Jugo

ArrozHuevosSopa

RevertirCheck in

Check out

Copia Local

Page 36: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

36ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Creando una copia local (2)

La mayoría del tiempo se inicia el trabajo con el repositorio realizando un checkout del proyecto

Este crea una copia de trabajo de ese directorio en la maquina local A menos que sea especificado, esa copia contiene el HEAD de los

directorios y archivos.

svn checkout http://host.example.com/svn/repo/trunk

Se puede hacer checkout mas profundo de cualquier directorio o archivo.

svn checkout http://host.example.com/svn/repo/trunk/src

Page 37: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

37ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Taller Ciclo de Trabajo con Subversion

Duración del taller 5 mins

Desarrollo del taller Crear dos copias locales de trabajo del mismo proyecto con svn en dos

directorios diferentes.

Page 38: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

38ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Checkout parciales

Muchas veces no se requiere “sacar” todo el árbol de directorios y archivos del repositorio

Trabajar con una porción en la copia local Para sacar posteriormente los archivos ignorados en el checkout inicial Optimizar el uso de los canales de red y la carga sobre el servidor SVN

Checkout tímidos o directorios dispersos Característica de subversion para hacer checkout parciales Se agrega al checkout la opción --depth

Se maneja la profundidad del checkout empty Solo el directorio que se hace checkout, sin hijos files El directorio al que se le hace checkout con sus hijos de tipo

archivo immediates El directorio y sus hijos inmediatos infinity Recursion total

Page 39: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

39ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Taller Ciclo de Trabajo con Subversion

Duración del taller 5 mins

Desarrollo del taller Hacer pruebas con los diferentes esquemas de checkout parciales Analizar los resultados

Page 40: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

40ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Actualizar la copia de trabajo

Se deben hacer las actualizaciones de la copia de trabajo local para incluir los cambios realizados en otras copias de trabajo de otros desarrolladores.

Para proteger datos, Subversion no permite que se haga commit de nuevos cambios a archivos o directorios desactualizados.

Se usa el comando update de svn.

svn update

Ahora se pueden hacer los cambios en la copia local. Cambios de archivo. Cambios de directorio. Cuando se trata de archivos… No hay que anunciar los cambios,

simplemente se realizan con la herramienta de predilección.

Pero si se trata de directorios, la cosa cambia……

Page 41: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

41ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Cambios en el árbol de directorio.

Involucra cambios a la estructura del directorio. Para cambios en el árbol

No se hacen los cambios inmediatamente, sino que se agenda para el próximo commit. A diferencia de con los archivos.

Los 5 comandos usados para hacer cambios en el árbol svn add FOO

• Adicionar FOO al repositorio. svn delete FOO

• Borra FOO del repositorio. svn copy FOO BAR

• Crea un nuevo item BAR que es un duplicado de FOO. svn move FOO BAR

• BAR se programa para adicionarse como una copia de FOO y FOO se programa para borrado.

svn mkdir FOO

• Un nuevo directorio llamado FOO se crea y se programa para adición.

Page 42: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

42ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Taller Ciclo de Trabajo con Subversion

Duración del taller 10 mins

Desarrollo del taller Realizar los siguientes cambios en el proyecto en este orden:

• Adicionar el directorio util• Adicionar nuevos archivos al directorio util• Renombrar el directorio unit por test

Crear el directorio comp usando el explorador o el shell Analizar la situación

Page 43: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

43ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Revisar los cambios

Antes deshacer visibles los cambios al repo, se debe hacer revisión.

Examinando los cambios usando los comandos Se pueden inferir mensajes de log mas precisos y consistentes a los

cambios. Se puede verificar que se cambió un archivo por accidente. Y deshacer

los cambios antes del commit.

Los comandos que permiten hacer revisión de los cambios son:

svn diff : Se puede ver el detalle de los cambios realizados a los archivos.

svn status: Puedes tener una vista general de los cambios que se han hecho.

Page 44: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

44ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Corregir los errores

Una vez se ha revisado con diff se puede notar que los cambios no son los deseados

Se puede usar el comando revert para regresar al estado previo a los cambios locales.

Este comando actúa inclusive fuera de línea.

svn revert list.txt (deshechar los cambios)

Taller: Realizar algún cambio sobre algún archivo Deshechar el cambio

Page 45: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

45ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Resolver algunos conflictos

Con svn status -u se puede predecir conflictos. Pero hay que trabajar con esos conflictos.

$ svn updateU INSTALLG READMEConflict discovered in 'bar.c'.Select: (p) postpone, (df) diff-full, (e) edit, (h) help for more options:

Subversion marca el archivo como con conflicto y pregunta que quieres hacer con el problema.

Las mas comunes son posponer, diff-full, editar. Pero con h, se pueden ver todas las opciones.

Page 46: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

46ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Resolviendo conflictos manualmente

Suponemos que tenemos conflictos, cuando queremos editar el archivo aparece algo como:

Top piece of breadMayonnaiseLettuceTomatoProvolone<<<<<<< .mineSalamiMortadellaProsciutto=======SauerkrautGrilled Chicken>>>>>>> .r2Creole MustardBottom piece of bread

Los signos de menor que, igual y mayor que son marcadores de conflictos y no son parte de los datos en conflicto.

Se deben eliminar antes del commit.

Modificado por mi

Lo que viene del repo

Page 47: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

47ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Que opciones se tienen?

Descartar tus cambios y trabajar con lo que puso tu colega Solución mas sencilla. Comando revert a tus cambios y hacer un update

Mantener tus cambios y botar cualquier cosa que hizo tu colega

Sobreescribir localmente tu versión sobre la original y decirle a SVN que se resolvió el conflicto con el comando resolve

Realizar una mezcla manual de ambas versiones en una nueva versión

Editar el archivo original, removiendo las marcas >> y << . Despues se marca como resuelto el conflicto con el comando resolve

UPDATE – RESOLVER – CLEAR? - COMMIT

Page 48: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

48ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Resolviendo conflictos manualmente

El texto entre los 2 primeros marcadores se componen de los cambios que se hicieron en el área en conflicto.

<<<<<<< .mineSalamiMortadellaProsciutto=======

El texto entre el segundo y tercer conjunto de marcadores es el texto del commit del otro desarrollador.

=======SauerkrautGrilled Chicken>>>>>>> .r2

Obviamente, no se borran indiscriminadamente, se habla con el otro compañero y se resuelven los conflictos.

Después de esto se puede usar svn resolve

Page 49: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

49ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Confirmando los cambios.

Check in Operación básica para enviar los cambios al repositorio.

Cada vez que se hace check in de una nueva versión se obtiene una nueva revisión.

Tronco principal

Arroz ArrozHuevos

ArrozHuevos

Jugo

ArrozHuevosSopa

Page 50: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

50ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Confirmando los cambios

Se está listo para llevar los cambios al servidor. Comando svn commit. Envia todos los cambios al repositorio. Se requiere proveer un mensaje de log describiendo el cambio.

Si el log es corto se puede usar –m svn commit -m “Se corrigió un error“

Si se están haciendo mensajes de log en archivos como release changes, se utiliza la opción –F (--file).

svn commit -F logmsg

Page 51: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

51ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Taller Ciclo de Trabajo con Subversion

Duración del taller 1/2 hora

Desarrollo del taller En grupo de 2 El usuario 1 debe realizar los siguientes cambios en el proyecto en este

orden:

• Modificar el texto del archivo archivo3.txt en la línea 3.• Hacer commit del archivo.

El usuario 2 deber realizar los siguientes cambios en el proyecto:

• Modificar el texto del archivo archivo3.txt en la línea 3.• Resolver conflictos manualmente

Page 52: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

52ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Ignorar archivos y directorios

En muchos proyectos existen archivos y directorios que no deben ser puestos en control de versiones

Archivos de relleno Librerias de prueba Directorios de compilados

Para eso se deben ignorar este tipo de archivos al momento de hacer commit

Se usa la propiedad svn:ignore para el area especifica del proyecto

Taller: Ignorar el directorio de clases

Page 53: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

53ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Examinando el historial.

Subversion permite explorar la historia Examinando las versiones anteriores de archivos y directorios

svn log

• Muestra información general

svn diff

• Muestra detalle a nivel de línea de un cambio en particular.

svn cat

• Recupera un archivo que está en una revisión en particular.

svn list

• Muestra los archivos en un directorio en una revisión especifica.

Page 54: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

54ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Exportación

La exportación permite generar un release del código limpio

Sin los archivos y directorios de control de SVN

Útil para mantener versiones de código con lenguaje de scripting

No se puede exportar un solo archivo, se exporta todo el árbol

También sirve para limpiar la copia local Haciendo un export al directorio mismo

Page 55: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

55ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

BRANCHING Y MERGING

Subversion para desarrolladores

Duración: 2 horas

Page 56: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

56ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Que es un Branch?

Situación: Supongamos que se está desarrollando una funcionalidad en un

software, pero se definió una nueva forma de hacerlo y se quiere evaluar si es posible usar esta nueva forma.

Cómo trabajamos con esta situación? Lo mas obvio es hacer una copia del proyecto y trabajar en

las dos copias separadamente. Los cambios se incorporan en una copia o en la otra. O se quiere hacer el mismo cambio en las dos copias.

Este es el concepto de Ramificación (Branch). Una línea de desarrollo que existe independientemente de otra línea Aun comparten una historia común si se remonta a algo lejano en el

tiempo.

Page 57: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

57ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Branches

Un branch es una línea de desarrollo distinta de la principal. Generalmente los desarrolladores trabajan sobre el trunk del proyecto,

pero en ciertas ocasiones puede ser útil crear una línea de desarrollo paralela, para esto se usa el término branch.

Situaciones en las que se usa un branch Querer comenzar el desarrollo de un nuevo producto a partir de una

versión del que tenemos para darle una orientación diferente. Para abordar un trabajo de mantenimiento u integración. Para atender peticiones de mejora o tareas concretas todo esto sobre

una versión especifica.

Page 58: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

58ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Cuando creamos ramas?

Depende de la cultura del proyecto No existe una política universal

Política “Nunca tener ramas” Proyectos nacientes que aun no tienen código ejecutable Los usuarios realizan commit diarios al tronco Ocasionalmente el tronco no compila, cuando hay una serie de cambios

“complejos” Pros: Muy fácil de seguir. No hay que aprender de ramas o merge. Cons: Desarrollo caótico, código inestable

Politica “Siempre tener ramas” Proyectos que tienen mantenimiento pesado Cada usuario crea/trabaja en su branch “privado” Cuando se completa el código, alguien revisa los branches y se hace el

merge al tronco Pros: Estabilidad del tronco Cons: Codificadores aislados, conflictos en el merge, trabajo extra.

Page 59: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

59ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Cuando creamos ramas?

Política “Ramas cuando se necesita” Los usuarios hacen commit diarios en el tronco Regla 1: El tronco debe compilar y pasar las pruebas de regresión. Los

codificadores que violen esta regla se “humillan” públicamente Regla 2: Un commit no puede ser tan grande que desaliente la revisión

de pares Regla 3: Si la regla 1 y 2 entran en conflicto (no es posible hacer la serie

de cambios pequeños sin alterar el tronco), entonces el usuario debe crear un branch y realizar los commit de los cambios en ese branch. Esto permite la revisión de pares sin alterar el tronco

Pros: Tronco estable. Hacer branches y merges es raro Cons: Adiciona una carga adicional al trabajo diario de los usuario, ellos

deben compilar y probar antes de cada commit

Page 60: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

60ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Taller branches con Subversion

Duración del taller 10 min

Desarrollo del taller Analizar las politicas de branching y establecer la adecuada para su

proyecto. Justificar la respuesta Socializar la respuesta

Page 61: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

61ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Solución con branches

Ejemplo: Imaginaremos que tenemos un proyecto con una línea de desarrollo

principal (sobre el trunk), y que en ciertos momentos algunas de las versiones (tags) que se marcaron pasaron al entorno de producción. Pero en un determinado momento se detecta un error critico o una tarea (por ejemplo cambiar la integración con otra aplicación) y hay que abordarla de forma rápida sobre la versión que hay en producción y sin pasar toda la nueva funcionalidad de las versiones que la siguieron y que no han pasado por un proceso de pruebas.

El equipo que desarrolla el proyecto debe de crear un branch sobre el tag que marca la versión que hay en producción y sobre la que se quiere implementar alguna tarea concreta.

Page 62: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

62ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Solución con branches

Para evitar que se repitan tareas en las distintas líneas, cada branch debe representar el desarrollo una tarea concreta para que se vuelva a integrar en la línea principal de desarrollo en poco tiempo, de esta manera la tarea de integración será menos costosa.

Existen casos en los cuales no se debe integrar el trabajo a la línea principal.

Cual caso?

Page 63: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

63ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Creación de Branches

Un branch es una COPIA!!! Es muy simple.

Se hace una copia del proyecto en el repositorio usando el comando svn copy.

Donde se ponga la copia, depende de lo que se desea. Si se opta por la política de un directorio llamado branches se debe

hacer el subdirectorio con el nombre de la rama.

Este comando causa un commit casi que instantáneo al repositorio.

Page 64: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

64ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

Taller branches con Subversion

Duración del taller 10 min

Desarrollo del taller El archivo archivo3.txt tiene un problema en la linea 3, este debe ser

solucionado mientras que se implementan nuevas características sobre el archivo 3

Page 65: 1 Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc. Control de Versiones con Subversión Versión Desarrolladores/Usuarios

65ã Copyright Procesix Inc. Cualquier copia u otro uso debe ser autorizado expresamente por Procesix Inc.

Procesix 2012

Desarrollo con Subversion

GRACIAS!!!