[ES] Control de versiones con subversion

Post on 12-Jun-2015

1.598 views 1 download

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

Control de Versiones con

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

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.

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.

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

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

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)

Clasificación

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

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.

Flujo de trabajo centralizado

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

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.

Flujos de trabajo distribuidos

Evolución

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)

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.

¿Por qué son necesarios?

❏ Actualiza archivos modificados

❏ Historial de cambios

❏ Copias de seguridad centralizadas

❏ Acceso remoto

❏ Seguridad

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.

Popularidad

ZeroTurnaround Developer Productivity Report 2013

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

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.

Arquitectura de 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.

Estructura del repositorio SVN

Estructura del repositorio SVN

Configuración de SVN

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

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/

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

Ciclo básico de trabajo

Subversion en la práctica

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.

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.

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

¿Preguntas?

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

Contacto

@eudriscabrera eudriscabrera

@eudriscabrera @eudris

Comunidades

@letsrockjava @ecabrerar

Eudris Cabrera Rodríguezeudris@gmail.com