[ES] Control de versiones con subversion

36
Control de Versiones con Eudris Cabrera Rodríguez Desarrollador de Software / Consultor Informático 13 Octubre 2013, Santiago de los Caballeros, R. D. Subversion

description

La carrera de ingeniería de software de la Universidad Abierta para adultos (UAPA), Santiago, ha estado desarrollando el tema "Como ser productivos con Software Libre". La temática llevada a cabo se ha basado en una serie de charlas impartidas por personas relacionadas al software libre. Participé con el tema Control de versiones con Subversion. Iniciamos con los conceptos generales de sistemas de control de versiones y luego con una explicación detallada del funcionamiento de Subversion.

Transcript of [ES] Control de versiones con subversion

Page 1: [ES] Control de versiones con  subversion

Control de Versiones con

Eudris Cabrera RodríguezDesarrollador de Software / Consultor Informático13 Octubre 2013, Santiago de los Caballeros, R. D.

Subversion

Page 2: [ES] Control de versiones con  subversion

Eudris Cabrera Rodríguez

❏ Egresado de la carrera de Ingeniería Telemática de la PUCMM en el 2006.

❏ Desarrollador Java EE / SE desde hace más de 6 años, laborando para prestigiosas empresas; Cementos Cibao, 8A, Edenorte Dominicana, entre otras.

❏ Desarrollador Informático / Consultor en PAFI (Programa de Administración Financiera Integrada / Ministerio de Hacienda).

❏ Entusiasta de la tecnología y software libre.

❏ Un apasionado del aprendizaje, que cree en la cultura de compartir conocimientos, enseñar y aprender de los demás.

Page 3: [ES] Control de versiones con  subversion

ResponsabilidadesLos conceptos y juicios de valor emitidos en esta presentación son responsabilidad personal y no se puede entender como una posición oficial de alguna empresa con la que he tenido relación laboral.

Asuntos LegalesTodas las marcas registradas, así como todos los logotipos, imágenes, fotografías, audio y vídeos mostrados en esta presentación son propiedad de sus respectivos propietarios.

Su utilización es solamente para fines ilustrativos y no pretendo dar a entender cualquier afiliación con esas empresas.

Page 4: [ES] Control de versiones con  subversion

Contenido

❏ ¿Qué es un sistema de control de versiones ? ❏ Clasificación❏ Evolución❏ Terminologías comunes❏ ¿Por qué son necesarios?❏ Ventajas❏ Subversion (SVN)

❏ Arquitectura❏ Estructura del repositorio❏ Servidor Subversion (SVN)❏ Instalación del Cliente (SVN)

❏ Recomendaciones❏ Conclusiones

Page 5: [ES] Control de versiones con  subversion

¿Qué es un sistema de control de versiones ?

Es un software que administra el acceso a un conjunto de archivos, y mantiene un historial de cambios realizados.

Se llama control de versiones a la gestión de los diversos cambios que se realizan sobre los elementos de algún producto o una configuración del mismo.

El control de versiones es útil para guardar cualquier documento que cambie con frecuencia, como una novela, o el código fuente de un programa.

Page 6: [ES] Control de versiones con  subversion

Características

Un sistema de control de versiones debe proporcionar:

❏ Mecanismo de almacenaje de los elementos que deba gestionar (ej. archivos de texto,imágenes, documentación...)

❏ Posibilidad de realizar cambios sobre los elementos almacenados (ej. modificaciones parciales, añadir, borrar, renombrar o mover elementos)

❏ Registro histórico de las acciones realizadas con cada elemento o conjunto de elementos (normalmente pudiendo volver o extraer un estado anterior del producto)

Page 7: [ES] Control de versiones con  subversion

Clasificación

La principal clasificación que se puede establecer está basada en la forma de almacenamiento de los repositorios.

Page 8: [ES] Control de versiones con  subversion

Centralizados

Existe un repositorio centralizado de todo el código, del cual es responsable un único usuario (o conjunto de ellos).

Se facilitan las tareas administrativas a cambio de reducir la potencia y flexibilidad, pues todas las decisiones fuertes (como crear una nueva rama) necesitan la aprobación del responsable.

Algunos ejemplos son CVS y Subversion.

Page 9: [ES] Control de versiones con  subversion

Flujo de trabajo centralizado

Page 10: [ES] Control de versiones con  subversion

¿Cómo funciona ?

Normalmente consiste en una copia maestra en un repositorio central, y un programa cliente con el que cada usuario sincroniza su copia local.

Esto permite compartir los cambios sobre un mismo conjunto de archivos.

Además, el repositorio guarda registro de los cambios realizados por cada usuario, y permite volver a un estado anterior en caso de necesidad.

Page 11: [ES] Control de versiones con  subversion

Distribuidos

Cada usuario tiene su propio repositorio. Los distintos repositorios pueden intercambiar y mezclar revisiones entre ellos.

Es frecuente el uso de un repositorio, que está normalmente disponible, que sirve de punto de sincronización de los distintos repositorios locales.

Ejemplos: Git, Mercurial y Bazaar.

Page 12: [ES] Control de versiones con  subversion

Flujos de trabajo distribuidos

Page 13: [ES] Control de versiones con  subversion

Evolución

Page 14: [ES] Control de versiones con  subversion

Terminologías comunes

❏ Repositorio❏ Version o Revisión❏ Conflicto❏ Resolver❏ Trunk o Rama Principal❏ Braches o bifurcaciones (ramas)❏ Tag o Rotulado (Etiquetado)❏ Merge o Fusión❏ Desplegar (Check-out, checkout)❏ Publicar o Enviar (commit, check-in)❏ Lista de cambios (changelist, change set, patch)❏ Actualización (sync ó update)

Page 15: [ES] Control de versiones con  subversion

Prácticas Obsoletas

❏ Mantener un backup en computadoras o servidores diferentes, así como también, guardar copia en disco compactos o disco externos.

❏ Crear aplicaciones in-house para manejar las versiones de tu código, quizás sea una buena opción pero está reinventando la rueda, ya que existen opciones open source para manejar versiones.

❏ Guardar los fuentes en Dropbox. Una solución usada en los últimos tiempos por los programadores. Dropbox internamente funciona como un manejador de versiones pero tiene sus limitantes en el uso que puede darle un desarrollador.

Page 16: [ES] Control de versiones con  subversion

¿Por qué son necesarios?

❏ Actualiza archivos modificados

❏ Historial de cambios

❏ Copias de seguridad centralizadas

❏ Acceso remoto

❏ Seguridad

Page 17: [ES] Control de versiones con  subversion

VentajasLa ventaja más obvia de usar control de versiones es la posibilidad de tener un número ilimitado de personas que trabajan en la misma base de código, sin tener que enviar constantemente los archivos de ida y vuelta.

Desarrolladores y otros profesionales que manejan archivos a los cuales se le realizan cambios constantemente, pueden beneficiarse del uso de los sistemas de control de versiones para guardar copias de sus archivos, diseños, libros, etc.

Usted puede navegar por los cambios anteriores realizado a su repositorio y volver a versiones anteriores si pasa algo.

Page 18: [ES] Control de versiones con  subversion

Popularidad

ZeroTurnaround Developer Productivity Report 2013

Page 19: [ES] Control de versiones con  subversion

Subversion (SVN)Desarrollador: Comunidad, y desarrolladores de CollabNet, Elego, VisualSVN, WANdiscoUrl: http://subversion.apache.orgLanzamiento inicial : 20 de octubre de 2000Programado en C.Sistema operativo: MultiplataformaLicencia: Licencia Apache

Page 20: [ES] Control de versiones con  subversion

Subversion se creó para igualar y mejorar la funcionalidad de CVS, preservando su filosofía de desarrollo.

Su desarrollo comenzó en el año 2000 como proyecto de código abierto apadrinado por CollabNet.

El líder del equipo de desarrollo fue Karl Fogel, autor de Open Source Development with CVS y fundador de Cyclic Software (compañía de desarrollo y soporte comercial para CVS.

Page 21: [ES] Control de versiones con  subversion

Arquitectura de Subversion

Page 22: [ES] Control de versiones con  subversion

Probablemente sea el sistema de control de versiones con la adopción más amplia.

La mayoría de los proyectos de código abierto utiliza Subversion como repositorio.

Google Code utiliza Subversion exclusivamente para distribuir código.

Otros proyectos de mayor envergadura, como SourceForge, Apache, y muchos otros también lo utilizan.

Page 23: [ES] Control de versiones con  subversion

Estructura del repositorio SVN

Page 24: [ES] Control de versiones con  subversion

Estructura del repositorio SVN

Page 25: [ES] Control de versiones con  subversion

Configuración de SVN

Page 26: [ES] Control de versiones con  subversion

Servidor Subversion (SVN)

Para obtener un servidor subversion tienes varias opciones:

Crear una cuenta en un servicio de alojamiento gratuito.

Ejemplo:https://www.assembla.com/homehttp://unfuddle.com/http://www.cloudbees.com

Page 27: [ES] Control de versiones con  subversion

Servidor Subversion (SVN)

Configurar tu propio servidor en tu red local:

Existen muchos recursos que te permitirán configurar tu propio servidor de versiones en tu red local, el siguiente tutorial es una excelente guía para instalar un servidor subversion en ubuntu server 12.04http://rbgeek.wordpress.com/2012/05/01/svn-server-on-ubuntu-12-04-lts-with-web-access/

Page 28: [ES] Control de versiones con  subversion

Instalación del Cliente (SVN)

Instalar cliente de Subversion para S.O’s Windows o para el sistema operativo de tu preferencia.

Descargar: TortoiseSVN

http://tortoisesvn.net/downloads.html

También podría usar las herramientas que nos ofrece wandisco, SmartSVN y Vanilla Subversion (Command Line):http://www.wandisco.com/subversion/download

Page 29: [ES] Control de versiones con  subversion

Ciclo básico de trabajo

Page 30: [ES] Control de versiones con  subversion

Subversion en la práctica

Page 31: [ES] Control de versiones con  subversion

Recomendaciones

❏ No utilizar el control de versiones como un sistema de backup.

❏ Enviar los cambios al servidor cuando conformen una unidad lógica.

❏ Ser preciso en los comentarios.

❏ Mantener la rama principal de proyecto sin errores de compilación.

Page 32: [ES] Control de versiones con  subversion

Conclusiones

❏ Desarrollar un software implica invertir mucho tiempo y dinero. No proteger el código fuente con un sistema de control de versiones es irresponsable y puede traer graves consecuencias.

❏ Cualquier persona que trabaje con archivos que son sometidos a cambios constantemente pueden beneficiarse del uso de los sistemas de control de versiones para guardar copias de sus archivos, diseños, libros, etc.

❏ Existen sistemas de control de versiones de código abierto, libre distribución y amplia documentación, lo que permite su fácil implementación y curva de aprendizaje.

Page 33: [ES] Control de versiones con  subversion

Referencias

Version Control with Subversion

http://svnbook.red-bean.com/

http://subversion.tigris.org/

Libro Version Control with Subversion (Ben Collins-Sussman,

Brian W. Fitzpatrick, C. Michael Pilato).

Ensayo "Subversion" de Alejandro Ramírez

Page 34: [ES] Control de versiones con  subversion

¿Preguntas?

Page 35: [ES] Control de versiones con  subversion

❏ Framework para el desarrollo de aplicaciones de voz.

❏ Ayuda a conectar Asterisk con el resto del mundo

❏ Servidor y Kit de desarrollo Java

Sitio Oficial: http://astivetoolkit.org

Conoce a Astive Toolkit

Únete a nosotros en GitHub

@astivetoolkit

Para contribuir de forma segura con Astive Toolkit, no olvides hacer una bifurcación (Fork) del repositorio.

Page 36: [ES] Control de versiones con  subversion

Contacto

@eudriscabrera eudriscabrera

@eudriscabrera @eudris

Comunidades

@letsrockjava @ecabrerar

Eudris Cabrera Rodrí[email protected]