SlideShare una empresa de Scribd logo
   
Desarrollo de software en comunidad:
Forja de código + Subversion (SVN)
Manuel Palomo Duarte
Oficina de Software Libre y 
Conocimiento Abierto (OSLUCA)
Universidad de Cádiz
   
Contenidos
¿Esto qué es?
¿Y esto para que me sirve?
Forja
Subversion
Un ejemplo sencillito, por favor
Un ejemplo “con chicha”
Un ejemplo “a mala leche”
Más allá de SVN
   
¿Esto qué es?
Forja de código: web (pública) que ofrece 
facilidades para el desarrollo de software (libre)
http://sourceforge.net
https://forja.rediris.es/
http://code.google.com/
Subversion (SVN): sistema para la gestión de 
diferentes versiones del código de un programa
Suportado por la mayoría de forjas actualmente
   
¿Y esto para qué me vale?
La Forja ofrece muchos servicios:
Clasificación y estadísticas del proyecto
Repositorio Subversion (navegable y comparable)
Foros, noticias (RSS), wikis, notificaciones
Publicación de binarios y documentos
Gestión de tareas y errores con tickets
En una palabra: visibilidad
Veamos un ejemplo: Tucan Project (CUSL3)
● https://forja.rediris.es/projects/cusl3­tucan
   
¿Y esto para qué me vale?
El uso de un repositorio Subversion:
Guarda copias de todas las versiones del código de 
un programa en un servidor externo
Recupera y compara versiones antiguas
Distribuye código: adiós a prog­0.9­2.seg.zip, 40MB
Funde aportaciones de varios usuarios
Saca muchas estadísticas (con StatSVN)
Veamos un ejemplo: Robinson 2.0 (DV2009)
● https://forja.rediris.es/plugins/scmsvn/viewcvs.php/?r
   
Forja
También hay sistemas de gestión de proyectos:
Más completos que a una forja: incluyen más control 
vertical (roles), Gantt, etc (Ej: Redmine)
Muy fáciles de usar (todo vía web)
Vamos a usarlo: ¡ábrete ya tu cuenta!
Para la Universidad en España (IRIS Libre): 
https://forja.rediris.es/
Otra que te guste:
https://en.wikipedia.org/w/index.php?title=Comparison_of_
   
Subversion
SVN se puede usar:
Llamada desde consola 
Desde GUIs (TortoiseSVN para Windows, Eclipse)
Subversion no hace magia
Pero gestiona perfectamente todo lo que puede
Conceptos:
Repositorio centralizado
Copia local
Aportación (commit)
   
Un ejemplo sencillito, por favor
Repositorio
centralizado
Copia
local
(1)
Descarga 
de versión
(2)
Aportación
(“commit”)
Usuario1 Usuario2
   
Un ejemplo sencillito, por favor
Aprenderemos con un ejemplo por parejas
Búscate tu compañero de desarrollo
Poneos como administradores del proyecto
Usuario 1 descarga la versión actual (1)
Orden: svn checkout <URL> [­­username <usr>]
Obtendremos un directorio vacío
Crea en él un fichero con un hola mundo en C
Haz una versión “lite”, que tenga 5 o 6 líneas
   
Un ejemplo sencillito, por favor
¡Mi primera aportación a un SVN! (2)
Indica a SVN que gestione el fichero:
Orden: svn add hola.c
Indica a SVN que envíe la aportación actual:
Orden: svn commit ­m “Hola mundo 1.0 lite”
Revisa que se vea desde la web de tu proyecto
Aparece un subdirectorio .svn en todos tus directorios
¡No tocar! Es para uso interno de SVN
   
Un ejemplo sencillito, por favor
Repositorio
centralizado
Copia
local
Usuario1
Copia
local
(3)
Descarga 
de versión
(4)
Aportación
(“commit”)
Usuario2
   
Un ejemplo sencillito, por favor
Usuario2 descarga la última versión, la 1 (3)
Orden: svn checkout <URL>
Crea un fichero makefile
Indica a SVN que gestione el fichero:
Orden: svn add makefile
Pon un comentario junto al printf de hola.c
Indica a SVN que envíe la aportación (4)
Orden: svn commit ­m “Hola mundo mejorado”
   
Un ejemplo sencillito, por favor
Repositorio
centralizado
Copia
local
desactual.
Usuario1
Copia
local
Usuario2
(6)
Actualiza 
la versión
(5)
Pregunto
estado
   
Un ejemplo sencillito, por favor
Pregunto estado al repositorio central (5):
Orden: svn status
Salida: una línea con el estado de cada fichero
A: añadido
D: para borrar
M: modificado
?: no controlado por SVN
C: fichero en conflicto (lo vemos más adelante)
   
Un ejemplo sencillito, por favor
Actualizo a la última versión (6)
Orden: svn update
También puedo a lo bruto (puede ser lento):
Orden: rm * ;  svn checkout
¡Nada se pierde en SVN!
Este es el flujo normal de trabajo en SVN
Me vale para el 80% de las veces en un proyecto 
sencillo
   
Un ejemplo “con chicha”
Repositorio
centralizado
Copia
Modif 1
Usuario1
Copia
Modif 2
Usuario2
(7)
Aportación
(“commit”)
(8)
Aportación
(“commit”)
(9)
Cambios
fundidos
   
Un ejemplo “con chicha”
Los dos usuarios trabajan a la vez:
Usuario1 pone comentario de autoría y licencia
Usuario2 añade “exit 0”
Usuario1 envía su aportación (7)
● Orden: svn commit ­m “Añadidos autores”
Usuario2 envía su aportación (8)
● Orden: svn commit ­m “Mejora de calidad”
Houston, ¿tenemos un problema?
   
Un ejemplo “con chicha”
No hay problema:
SVN funde los cambios automáticamente
Usuario2 recibe mensaje de desactualizado
Usuario2 actualiza su repositorio
● Orden: svn update
● Los mismo indicadores que en svn status, 
más G (merge): fundido de versiones
Usuario2 envía su aportación (8)
● Orden: svn commit ­m “Mejora de calidad”
¡Viva Subversion!
   
Un ejemplo “con mala leche”
Repositorio
centralizado
Copia
Modif 1
Usuario1
Copia
Modif 2
Usuario2
(11)
Aportación
(“commit”)
(12)
Aportación
(“commit”)
(13)
Conflicto de
versiones
(10)
Actualiza 
la versión
   
Un ejemplo “con mala leche”
Usuario1 actualiza (10): svn update
Usuario1 cambia “Hola mundo” por “Hola frikis”
Usuario2 cambia “Hola mundo” por “Hola a 
todos”
Usuario1 envía su aportación (11)
Orden: svn commit ­m “Cambio de mensaje”
Usuario1 envía su aportación (12)
Orden: svn commit ­m “Cambiado mensaje”
SVN no puede fundir los cambios … ¡conflicto!
   
Un ejemplo “con mala leche”
Usuario2 tiene ahora tres versiones del fichero
hola.c.r4: con la que empezó a trabajar
hola.c.mine: resultado de sus modificaciones
hola.c.r5: la que hay en el repositorio
hola.c: fichero con las diferencias de hola.c.r*
Usuario2 hace lo que le de la gana
Depende del lenguaje, proyecto, …
Se puede usar diff, kdiff3, tkdiff o apoyarse en la web
   
Un ejemplo “con mala leche”
Usuario2 deja en hola.c el contenido que desea 
subir y borra los demás
Usuario2 envía su aportación (12)
Orden: svn commit ­m “Cambiado mensaje”
Con esto cubro el 99% de los usos de SVN
Pero hay mucho más (ver referencias)
Ejemplo: svn checkout ­r 2
Ramas para congelar o pruebas (branches)
   
Más allá de SVN
StatSVN saca estadísticas de un repositorio:
¿A qué hora del día hago más commits?
¿Quien ha modificado más líneas de código?
…
Uso: descargo y desempaqueto StatSVN
Orden: svn log ­v ­­xml > logfile.log
Orden: java ­jar statsvn.jar logfile.log <directorio>
Ej: http://www.statsvn.org/statsvn­html/index.html
   
Más allá de SVN
Si SVN se te queda pequeño puedes pasar a un 
sistema distribuido
Permiten que varios usuarios tengan el 
repositorio de referencia de parte del código
Más potencia => más complejo
Ejemplos:
Bazaar (usado en Ubuntu)
Git (usado en el núcleo Linux)
   
Referencias
Ayuda incorporada: svn help
Version Control with Subversion
http://svnbook.red­bean.com/
StatSVN
http://wiki.statsvn.org/
kdiff3
http://kdiff3.sourceforge.net/
   
Gracias por su atención
¿Preguntas?
manuel.palomo@uca.es

Más contenido relacionado

PDF
Subversion: La tortuga y sus documentos
TXT
Change in validation
PPTX
Subversion
PPT
Presentación SUbversion
PDF
Subversion Best Practices
PDF
Tortoise svn 1.8.1-en
PDF
Forjas y repositorios de código en la nube. Euskal Encounter 2015
PDF
Introducción al desarrollo de software en comunidad con forja de software y git
Subversion: La tortuga y sus documentos
Change in validation
Subversion
Presentación SUbversion
Subversion Best Practices
Tortoise svn 1.8.1-en
Forjas y repositorios de código en la nube. Euskal Encounter 2015
Introducción al desarrollo de software en comunidad con forja de software y git

Similar a Presentación Subversion (20)

PDF
Forjas de Software: qué son y para que sirven
PDF
[ES] Control de versiones con subversion
ODP
Introduccion a vcs_y_svn_v3.0
ODP
Sistemas de control de versiones
PDF
Guia01 control versiones
PDF
Control de versiones y Subversion
PDF
Usar.software.libre.en.la.carrera
ODP
Desarrollo Subversivo
ODP
Control de versiones con Subversion
PDF
Subversion Press
DOCX
Cuestionario diagnostico
ODP
Como llevar un proyecto de software libre
PDF
Open Source
PPT
Herramientas Open Source
PDF
Adopcion Codigo Abierto
PDF
Integrando sonar
PDF
Floss - Programa de open source
PDF
Control de Versiones con Subversion (SVN)
ODP
Software Libre en PyMES
ODP
Charla Emprendiendo
Forjas de Software: qué son y para que sirven
[ES] Control de versiones con subversion
Introduccion a vcs_y_svn_v3.0
Sistemas de control de versiones
Guia01 control versiones
Control de versiones y Subversion
Usar.software.libre.en.la.carrera
Desarrollo Subversivo
Control de versiones con Subversion
Subversion Press
Cuestionario diagnostico
Como llevar un proyecto de software libre
Open Source
Herramientas Open Source
Adopcion Codigo Abierto
Integrando sonar
Floss - Programa de open source
Control de Versiones con Subversion (SVN)
Software Libre en PyMES
Charla Emprendiendo
Publicidad

Más de DrPantera (11)

PDF
Presentación SPI&FM 26jun19 RiDiVi
PDF
Oficinas de Software Libre Universitarias: renovarse o morir
PDF
A Collaborative Mobile Learning System to Facilitate Foreign Language Learnin...
PDF
Presentacion guessit junio2016
PDF
Usos y evaluación de wikis en docencia
PPTX
Evaluación del trabajo individual y grupal en un wiki
PDF
A Domain Specific Language to retrieve objective indicators for foreign langu...
PDF
Identifying foreign language learning profiles in game-based environments by ...
PDF
Presentación Guess it! AulaBlog 2015
PDF
Assessment in programming competitive assignments
PDF
Transparencias de tesis PhD
Presentación SPI&FM 26jun19 RiDiVi
Oficinas de Software Libre Universitarias: renovarse o morir
A Collaborative Mobile Learning System to Facilitate Foreign Language Learnin...
Presentacion guessit junio2016
Usos y evaluación de wikis en docencia
Evaluación del trabajo individual y grupal en un wiki
A Domain Specific Language to retrieve objective indicators for foreign langu...
Identifying foreign language learning profiles in game-based environments by ...
Presentación Guess it! AulaBlog 2015
Assessment in programming competitive assignments
Transparencias de tesis PhD
Publicidad

Último (20)

PDF
CyberOps Associate - Cisco Networking Academy
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PDF
taller de informática - LEY DE OHM
PDF
Estrategia de apoyo tecnología miguel angel solis
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PPT
introduccion a las_web en el 2025_mejoras.ppt
PDF
Diapositiva proyecto de vida, materia catedra
PPTX
Presentación de Redes de Datos modelo osi
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PDF
Calidad desde el Docente y la mejora continua .pdf
PDF
Influencia-del-uso-de-redes-sociales.pdf
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
CyberOps Associate - Cisco Networking Academy
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
taller de informática - LEY DE OHM
Estrategia de apoyo tecnología miguel angel solis
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
introduccion a las_web en el 2025_mejoras.ppt
Diapositiva proyecto de vida, materia catedra
Presentación de Redes de Datos modelo osi
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
El-Gobierno-Electrónico-En-El-Estado-Bolivia
REDES INFORMATICAS REDES INFORMATICAS.pptx
Calidad desde el Docente y la mejora continua .pdf
Influencia-del-uso-de-redes-sociales.pdf
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
Plantilla para Diseño de Narrativas Transmedia.pdf
historia_web de la creacion de un navegador_presentacion.pptx
Zarate Quispe Alex aldayir aplicaciones de internet .docx
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...

Presentación Subversion