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.
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
[ES] Control de versiones con subversion
1. Control de Versiones con
Subversion
Eudris Cabrera Rodríguez
Desarrollador de Software / Consultor Informático
13 Octubre 2013, Santiago de los Caballeros, R. D.
2. 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.
3. Responsabilidades
Los 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 Legales
Todas 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.
4. 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
5. ¿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.
6. 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)
8. 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.
10. ¿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.
11. 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.
14. 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)
15. 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.
16. ¿Por qué son necesarios?
❏ Actualiza archivos modificados
❏ Historial de cambios
❏ Copias de seguridad centralizadas
❏ Acceso remoto
❏ Seguridad
17. Ventajas
La 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.
19. Subversion (SVN)
Desarrollador:
Comunidad, y desarrolladores de CollabNet, Elego,
VisualSVN, WANdisco
Url:
http://subversion.apache.org
Lanzamiento inicial :
20 de octubre de 2000
Programado en C.
Sistema operativo:
Multiplataforma
Licencia:
Licencia Apache
20. 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.
22. 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.
26. 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/home
http://unfuddle.com/
http://www.cloudbees.com
27. 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.04
http://rbgeek.wordpress.com/2012/05/01/svn-server-on-ubuntu-12-04-lts-withweb-access/
28. 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
31. 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.
32. 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.
33. 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
35. Conoce a Astive Toolkit
❏ 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
Únete a nosotros en GitHub
@astivetoolkit
Para contribuir de forma segura
con Astive Toolkit, no olvides
hacer una bifurcación (Fork) del
repositorio.