Control de Versiones con Subversion
Introducción
Control de Versiones con
Subversion
Contenido
Sistemas de Control de
Versiones
Uso elemental de Subversion
Características avanzadas
Bibliografía
MADS Group - Departamento de Computación
Carlos Abalde (
[email protected])
David Cabrero (
[email protected])
Laura Castro (
[email protected])
26 de febrero de 2007
(UDC)
Control de Versiones con Subversion
26 de febrero de 2007
1 / 23
Control de Versiones con
Subversion
Contenido
Sistemas de Control de
Versiones
Uso elemental de Subversion
Características avanzadas
Bibliografía
Contenido
1 Sistemas de Control de Versiones
2 Uso elemental de Subversion
3 Características avanzadas
4 Bibliografía
(UDC)
Control de Versiones con Subversion
26 de febrero de 2007
2 / 23
Control de Versiones con
Subversion
Contenido
Sistemas de Control de
Versiones
Uso elemental de Subversion
Características avanzadas
Bibliografía
Motivación
Lo único constante es el cambio.
Preguntas:
¿ Cómo controlo las versiones ?
¿ Qué cambios hay entre versiones ?
¿ Quién hizo tal cambio ?
¿ Por qué se hizo el cambio X ?
¿ Cómo vuelvo a una versión estable ?
¿ Cómo controlo los cambios simultáneos de varias
personas ?
Respuesta (Sistema de Control de Versiones).
(UDC)
Control de Versiones con Subversion
26 de febrero de 2007
3 / 23
Control de Versiones con
Subversion
Contenido
Sistemas de Control de
Versiones
Uso elemental de Subversion
Características avanzadas
Bibliografía
¿ Qué es un control de versiones ?
Un sistema para la gestión y almacenamiento de todas las
versiones de los diferentes componentes de un proyecto de
desarrollo.
Características:
Existe un repositorio (centralizado o distribuido) común
donde se guardan todas las versiones
Los desarrolladores trabajan en su copia local e incorporan
las modificaciones al repositorio
El sistem registra las modificaciones en archivos y sus
comentarios asociados
El sistema gestiona las distintas versiones almacenadas en
el repositorio
El sistema permite el desarrollo de varias versiones
simultáneamente
(UDC)
Control de Versiones con Subversion
26 de febrero de 2007
4 / 23
Despliegue típico
Control de Versiones con
Subversion
Contenido
Sistemas de Control de
Versiones
Uso elemental de Subversion
Características avanzadas
Bibliografía
(UDC)
Control de Versiones con Subversion
26 de febrero de 2007
5 / 23
RepositoryNetworkWorkingcopyWorkingcopyAliceBobcheck out, updatecommitcheck out, updatecommitNumeración, etiquetas y ramas
Numeración de versiones
Depende del sistema (por fichero, por commit)
Etiquetas
Nombres en vez de números
Ramas
Varias líneas de desarrollo simultáneas
Ejemplo: Rama estable y rama de desarrollo
Control de Versiones con
Subversion
Contenido
Sistemas de Control de
Versiones
Uso elemental de Subversion
Características avanzadas
Bibliografía
(UDC)
Control de Versiones con Subversion
26 de febrero de 2007
6 / 23
Numeración, etiquetas y ramas
Numeración de versiones
Depende del sistema (por fichero, por commit)
Etiquetas
Nombres en vez de números
Ramas
Varias líneas de desarrollo simultáneas
Ejemplo: Rama estable y rama de desarrollo
Control de Versiones con
Subversion
Contenido
Sistemas de Control de
Versiones
Uso elemental de Subversion
Características avanzadas
Bibliografía
(UDC)
Control de Versiones con Subversion
26 de febrero de 2007
6 / 23
Numeración, etiquetas y ramas
Numeración de versiones
Depende del sistema (por fichero, por commit)
Etiquetas
Nombres en vez de números
Ramas
Varias líneas de desarrollo simultáneas
Ejemplo: Rama estable y rama de desarrollo
Control de Versiones con
Subversion
Contenido
Sistemas de Control de
Versiones
Uso elemental de Subversion
Características avanzadas
Bibliografía
(UDC)
Control de Versiones con Subversion
26 de febrero de 2007
6 / 23
BranchTrunkCreatereleasebranchBug fixesmergeReleaseLocking
¿ Qué ocurre cuando dos desarrolladores modifican el
mismo fichero ?
Dos aproximaciones:
Strict locking.
Optimistic locking.
Control de Versiones con
Subversion
Contenido
Sistemas de Control de
Versiones
Uso elemental de Subversion
Características avanzadas
Bibliografía
(UDC)
Control de Versiones con Subversion
26 de febrero de 2007
7 / 23
Control de Versiones con
Subversion
Contenido
Sistemas de Control de
Versiones
Uso elemental de Subversion
Características avanzadas
Bibliografía
CVS
Concurrent Version System
Creado a partir del proyecto de Dick Grune (1986), siendo
aun hoy un desarrollo activo
Uso muy extendido
Por ejemplo, Sourceforge
Tiene algunas limitaciones ligadas a su diseño inicial que
empujan a su reemplazo por sistemas alternativos
Alternativas a CVS solucionan algunos de sus problemas,
Commits atómicos
Identificador de archivo distinto de path de archivo
Permiten trabajo desconectado
Soporte de branchs mejorado
. . .
(UDC)
Control de Versiones con Subversion
26 de febrero de 2007
8 / 23
Control de Versiones con
Subversion
Contenido
Sistemas de Control de
Versiones
Uso elemental de Subversion
Características avanzadas
Bibliografía
Alternativas a CVS
Arch
GIT
http://arch.fifthvision.net
En teoría, soporta un gran conjunto de funcionalidades
Escrito en shell scripts
http://www.kernel.org/git/
Usado en el desarrollo del kernel de Linux
Distribuido, no centralizado. Substituto de bitkeeper
Perforce
http://www.perforce.com
Comercial.
Subversion
http://subversion.tigris.org
“A compelling replacement for CVS”
Creado a semejanza de CVS, eliminado sus carencias
(UDC)
Control de Versiones con Subversion
26 de febrero de 2007
9 / 23
Control de Versiones con
Subversion
Contenido
Sistemas de Control de
Versiones
Uso elemental de Subversion
Características avanzadas
Bibliografía
Fundamentos (I)
Diferencias entre ficheros
$ cat hola1.c
#include <stdio.h>
int main(int argc, char* argv[]) {
printf("Hola mundo");
}
$ cat hola2.c
#include <stdio.h>
int main(int argc, char* argv[]) {
printf("Hola mundo!\n");
}
$ diff hola1.c hola2.c
4c4
<
---
>
printf("Hola mundo");
printf("Hola mundo!\n");
(UDC)
Control de Versiones con Subversion
26 de febrero de 2007
10 / 23
Fundamentos (II)
Parches
$ diff hola1.c hola2.c > parche
$ patch hola1.c < parche
$ cat hola1.c
#include <stdio.h>
int main(int argc, char* argv[]) {
printf("Hola mundo!\n");
}
Control de Versiones con
Subversion
Contenido
Sistemas de Control de
Versiones
Uso elemental de Subversion
Características avanzadas
Bibliografía
(UDC)
Control de Versiones con Subversion
26 de febrero de 2007
11 / 23
Modus operandi
1 Para un proyecto nuevo, se crea un repositorio.
2 Cada desarrollador:
1 Obtiene una copia del repositorio (copia local).
2 Trabaja sobre su copia local.
3 Eventualmente:
Manda sus cambios al respositorio.
Actualiza su copia local con los cambios de otros
desarrolladores.
Control de Versiones con
Subversion
Contenido
Sistemas de Control de
Versiones
Uso elemental de Subversion
Características avanzadas
Bibliografía
(UDC)
Control de Versiones con Subversion
26 de febrero de 2007
12 / 23
Control de Versiones con
Subversion
Contenido
Sistemas de Control de
Versiones
Uso elemental de Subversion
Características avanzadas
Bibliografía
Comandos básicos
Desde el punto de vista de los usuarios
svn
Desde el punto de vista del administrador
svnadmin
Otros comandos
svnlook
svnserve
svnversion
Ayuda
svn help
svn help copy
svnadmin help
(UDC)
Control de Versiones con Subversion
26 de febrero de 2007
13 / 23
Control de Versiones con
Subversion
Contenido
Sistemas de Control de
Versiones
Uso elemental de Subversion
Características avanzadas
Bibliografía
Creación de un repositorio
Creamos un repositorio test en el directorio
path to repository/SVN/
svnadmin create path to repository/SVN/test
Atención a path to repository/SVN/test/README.txt
“This is a Subversion repository; use the
’svnadmin’ tool to examine it. Do not add,
delete, or modify files here unless you know how
to avoid corrupting the repository.”
URL (local): file:///path to repository/SVN/test
La estructura de directorios es libre, sin embargo
El uso natural es crear un repositorio para cada proyecto.
A diferencia de en CVS, la numeración de versiones es
global para cada repositorio, y por ello la existencia de
repositorios con más de un proyecto no es razonable
(UDC)
Control de Versiones con Subversion
26 de febrero de 2007
14 / 23
Inserción de datos en el repositorio
Podemos comenzar a añadir ficheros al repositorio desde
cero, pero
Si ya disponemos de una estrucutra inicial, podemo usarla
para popular el repositorio
svn import PATH URL
En nuestro caso
svn import path inital files
file:///path to repository/SVN/test
Variable de entorno EDITOR
Control de Versiones con
Subversion
Contenido
Sistemas de Control de
Versiones
Uso elemental de Subversion
Características avanzadas
Bibliografía
(UDC)
Control de Versiones con Subversion
26 de febrero de 2007
15 / 23
Descarga de una copia de trabajo
Para comenzar a trabajar con el repositorio es necesario
descargar nuestra copia de trabajo personal
svn checkout URL PATH
HEAD (última versión) en el repositorio
Directorio .svn
Manipulación básica de archivos
Control de Versiones con
Subversion
Contenido
Sistemas de Control de
Versiones
Uso elemental de Subversion
Características avanzadas
Bibliografía
svn copy SRC DEST
svn move SRC DEST
svn add PATH
svn rm TARGET
svn mkdir PATH
(UDC)
Control de Versiones con Subversion
26 de febrero de 2007
16 / 23
Control de Versiones con
Subversion
Contenido
Sistemas de Control de
Versiones
Uso elemental de Subversion
Características avanzadas
Bibliografía
Edición de archivos
Sobre la copia de trabajo los archivos pueden modificarse
con normalidad
Para comprobar los cambios hechos respecto a l
Comentarios de: Control de Versiones con Subversion - Introducción (0)
No hay comentarios