SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
Introducci´n a Subversion
                              o
                                    ´
                          Alejandro Alvarez Ayll´n
                                                o
                            21 de febrero de 2008


   Este ap´ndice es una gu´ introductoria al sistema de control de versiones
           e               ıa
Subversion. Si necesita una documentaci´n completa puede consultar Version
                                       o
Control with Subversion[4]


1.      Introducci´n
                  o
1.1.     Qu´ es
           e
    Subversion es un sistema libre de control de versiones, es decir, controla los
archivos y directorios y sus cambios a lo largo del tiempo.
    Un ´rbol de archivos se almacena en un repositorio central, que es como un
        a
sistema de archivos normal, con la diferencia de que almacena todos los cambios
realizados.
    Permite acceder a trav´s de la red, por lo que puede ser usado desde distintos
                           e
ordenadores, incentivando la colaboraci´n, ya que se trabaja sobre el mismo
                                          o
conjunto de datos.
    Dado que los cambios no se centralizan, se progresa m´s r´pidamente, sin
                                                              a a
perder adem´s calidad en el proceso, ya que si se realiza un cambio erroneo
             a
puede deshacerse.
    Adem´s, puede controlar desde c´digo fuente en cualquier lenguaje hasta
          a                            o
ediciones de v´
              ıdeo.

1.2.     Vocabulario
     A continuaci´n se describen algunos t´rminos de uso habitual en este ´mbito.
                 o                        e                               a

L´
 ınea base (“Baseline”) Una revisi´n aprobada a partir de la que se pueden
                                  o
     realizar cambios.

Rama (“branch”) Conjunto de ficheros con dos o m´s copias mantenidas de
                                               a
   forma independiente.

“Check-out” (“checkout”, “co”) Crear una copia para trabajar localmen-
    te.




                                        1
“Commit” (“check-in”, “ci”, “install”, “submit”) Escribir los cambios
    locales sobre el repositorio.
Conflicto Ocurre cuando se realizan cambios por diferentes partes al mismo
    documento, y el sistema es incapaz de reconciliar los mismos.
Cambio (“change”, “diff”, “delta”) Representa una modificaci´n de un do-
                                                          o
   cumento.
Lista de cambios (“changelist”, “change set”, “patch”) Conjunto de cam-
     bios realizados en un unico commit.
                           ´
Exportaci´n (“export”) Una exportaci´n es similar a un check-out, salvo
          o                               o
    porque crea un ´rbol de directorios limpio sin los metadatos de control de
                    a
    versiones presentes en la copia de trabajo.
Importaci´n (“import”) Es la acci´n de copia un ´rbol de directorios local
          o                          o          a
    en el repositorio por primera vez.
Integraci´n (“merge”) Una integraci´n une dos conjuntos de cambios sobre
         o                          o
     un fichero o un conjunto de ficheros en una revisi´n unificada de dicho
                                                     o
     fichero.
     Puede suceder cuando un usuario actualiza su copia local con los cambios
     realizados por otros usuarios. An´logamente, este mismo proceso puede
                                       a
     ocurrir en el repositorio cuando un usuario intenta subir sus cambios.
     O despu´s de que se haya creado una rama y sea necesario aplicar en ella
             e
     un cambio realizado en otra (solucionar un error anterior a la divisi´n, por
                                                                          o
     ejemplo)
     O cuando se quieran fundir dos ramas diferentes de desarrollo.
Repositorio El repositorio es el lugar en el que se almacenan los datos actua-
    lizados e hist´ricos
                  o
Integraci´n inversa El proceso de fundir ramas de diferentes equipos en la
         o
     rama principal del sistema de versiones.
Revisi´n (“versi´n”) Una revisi´n es una versi´n dentro de una cadena de
      o         o              o              o
    cambios.
Etiqueta (“tag”, “release”) Se puede etiquetar un conjunto de ficheros con
     un nombre f´cil de identificar, o con un n´mero de revisi´n.
                a                             u              o
Resolver Intervenci´n del usuario para atender un conflicto entre diferentes
                   o
    cambios al mismo documento.
Actualizaci´n (“sync”) Integraci´n de los cambios que han sido hechos en
           o                        o
    el repositorio sobre la copia de trabajo local.
Copia de trabajo Copia local de los ficheros de un repositorio. Todo el trabajo
    realizado sobre los ficheros en un repositorio se realiza inicialmente sobre
    una copia de trabajo.


                                       2
1.2.1.    Caracter´
                  ısticas
Control de directorios Subversion implementa un sistema de ficheros “vir-
    tual” que controla los cambios a todo el ´rbol de directorios.
                                             a

Control “verdadero” Subversion permite el a˜adido, borrado, copia y re-
                                               n
    nombrado de archivos y directorios, teniendo cada nuevo archivo un his-
    torial propio aunque el nombre coincida con un archivo antiguo que fuera
    borrado.

Env´ at´micos Un conjunto de cambios se aplican al repositorio completa-
   ıos o
    mente o no se aplica ninguno, evitando inconsistencias.

Metadatos versionados A cada archivo o directorio se le puede aplicar cual-
    quier propiedad que se quiera, manteniendo un historial de los cambios.

Elecci´n de las capas de red Subversion abstrae el acceso al repositorio, por
      o
     lo que se puede implementar distintas maneras de hacerlo a trav´s de la
                                                                        e
     red: como m´dulo de Apache HTTP Server, por ejemplo. Tambi´n existe
                 o                                                    e
     un peque˜o y ligero servidor que puede usarse f´cilmente a trav´s de SSH.
              n                                     a               e

Manejo consistente de los datos La diferencia entre archivos se almacena
   usando un algoritmo diferencial binario, por lo que se puede aplicar a
   archivos de texto o binarios.


2.       Instalaci´n
                  o
    Subversion est´ construido sobre una capa de portabilidad llamada APR
                    a
(Apache Portable Runtime library), lo que significa que es capaz de funcionar
en cualquier sistema operativo en el que el servidor Apache httpd se ejecute:
Windows, Linux, todos los BSD, Mac OS X, Netware, etc.
    La manera m´s sencilla de instalarlo es descargar el paquete construido para
                  a
su sistema operativo desde el sitio web de Subversion (http://subversion.tigris.org).
Normalmente pueden encontrarse instaladores gr´ficos para los usuarios de sis-
                                                   a
temas operativos de Microsoft. Si usa un sistema Unix-like, puede usar el sistema
nativo de paquetes (RPMs, DEBs, etc.) para obtener Subversion.
    Como alternativa, puede compilar Subversion directamente a partir de la
ultima versi´n del c´digo fuente. Antes de descomprimirlo siga las instruccio-
´            o        o
nes del archivo INSTALL. Tenga en cuenta que un paquete contiene todo lo
necesario para compilar un cliente capaz de conectarse a repositorios remotos,
pero opciones adicionales pueden tener otras dependencias (como Berkeley DB
o Apache httpd). Si quiere compilar una versi´n completa debe asegurarse de
                                                o
que tiene todos los paquetes listados en el archivo INSTALL.
    Si quiere trabajar en el c´digo, puede usar su cliente para obtener el c´digo
                              o                                              o
m´s reciente.
  a




                                        3
3.       Gu´ b´sica r´pida
           ıa a      a
   Lo primero que debe tener en cuenta es el comando que le resultar´ m´s util
                                                                    a a ´
para empezar a usar Subversion: svn help. Puede usarlo de la forma svn help
COMANDO para obtener ayuda sobre el comando pasado como par´metro.   a

3.1.     Checkout inicial
   Lo primero que debe hacer es obtener una copia de trabajo local a partir del
repositorio central:

$ svn checkout svn://osl.uca.es/proyecto

   Esto crear´ un nuevo directorio llamado “proyecto”, dentro del que se des-
             a
cargar´n todos los archivos del mismo. Una vez hecho esto ya puede empezar a
      a
trabajar como lo har´ normalmente.
                     ıa

       NOTA: Aunque puede usarlo como si fuera un directorio normal,
       para copiar o mover archivos deber´ usar los comandos svn copy y
                                         a
       svn move en lugar de los habituales.

    Dentro de cada directorio del proyecto se crear´ otro directorio llamado
                                                   a
“.svn”. No borre ni modifique su contenido bajo ning´n concepto.
                                                   u
   Si quiere descargar el proyecto en un directorio con un nombre diferente,
puede hacerlo:

 $ svn checkout svn://osl.uca.es/proyecto MiProyecto

    De esta forma en lugar de crear un directorio llamado “proyecto” se crear´ uno
                                                                             a
llamado “MiProyecto”.

3.2.     Ciclo de trabajo b´sico
                           a
   Pese a la gran variedad de comandos que tiene Subversion, la mayor´ de las
                                                                     ıa
veces bastan unos pocos de ellos. El ciclo normal es:

3.2.1.    Actualizar la copia de trabajo
    Cuando quiere actualizar su copia de trabajo con el repositorio central debe
ejecutar svn update.

 $ svn update
 U INSTALL
 U README

   Cuando se ejecuta esta orden se muestra una lista de los archivos actualizados
junto con una letra que indica el tipo de cambio:


                                        4
U El archivo se ha actualizado.
A El archivo se ha a˜adido.
                    n
D El archivo ha sido borrado.
R Se ha sustituido el archivo por otro con el mismo nombre. Subversion los
    considera diferentes.
G El archivo actualizado hab´ sido modificado localmente, pero los cambios
                             ıa
    no se pisan, as´ que se han “fundido” ambas versiones.
                   ı
C Los cambios locales y los realizados en el repositorio se solapan. Es necesario
    solucionar manualmente el conflicto.

3.2.2.    Realizar cambios
   Hay dos tipos de cambios:
       Cambios en un archivo. Editarlo normalmente con el programa adecuado:
       editor de texto, de gr´ficos, etc. Subversion detecta autom´ticamente los
                             a                                   a
       cambios.
       Cambios en el ´rbol de directorio. Pueden a˜adirse archivos o directo-
                        a                              n
       rios, borrarlos, moverlos, copiarlos, etc. Para estos cambios debe usar los
       comandos de Subversion. Se realizan localmente en el acto, y en el reposi-
       torio cuando se env´ los cambios.
                           ıen
   Los comandos son:
svn add A A˜ade el archivo (o directorio) A (y todo su contenido).
           n
svn delete A Elimina el archivo (o directorio) A (y todo su contenido).
svn copy A B Duplica el archivo (o directorio) A con el nombre B y lo a˜ade
                                                                       n
     al repositorio.
svn move A B Equivalente a svn copy A B; svn delete A
svn mkdir A Crea un nuevo directorio A.

3.3.     Revisar los cambios
   Los siguientes comandos pueden emplearse sin necesidad de una conexi´n al
                                                                       o
repositorio central.
svn status Informa sobre todos los cambios realizados a archivos o al ´rbol de
                                                                        a
     directorios. Delante de cada nombre de archivo aparecen tres columnas. La
     primera se refiere al estado del archivo, la segunda al de sus propiedades y
     la tercera muestra una L cuando est´ bloqueado (locked ), posiblemente por
                                         a
     un commit en curso. Los valores que pueden aparecer en las dos primeras
     columnas son:


                                        5
A Ha sido a˜adido.
                  n
       C En conflicto.
       D Marcado para borrar.
       M Modificado.
       R Marcado para ser reemplazado.
       X No est´ versionado pero est´ relacionado con definiciones externas (pa-
               a                    a
          ra m´s informaci´n consultar el manual de Subversion).
               a           o
       ? No est´ bajo control.
               a
       ! Est´ bajo control pero no se encuentra o tiene alg´n error. Puede usar
            a                                              u
            svn revert para recuperarlo.
       ˜ Est´ bajo control como un tipo diferente al que hay en la copia de
            a
           trabajo (por ejemplo, controlado como archivo y actualmente es un
           directorio).
       I No est´ bajo control y est´ marcado para que subversion lo ignore cuan-
               a                   a
           do se usen los comandos svn add, svn status y svn import.
svn diff Muestra los cambios realizados sobre un archivo en concreto si se es-
     pecifica o sobre todos en general. Indica las l´
                                                   ıneas a˜adidas y eliminadas
                                                          n
     usando el formato del diff unificado[2].
svn revert Deshace los cambios realizados sobre el fichero o directorio pasado
     como par´metro, volviendo a la revisi´n anterior.
             a                            o

3.4.      Solucionar conflictos
    Si Subversion encuentra un conflicto al actualizar un fichero crear´ tres ar-
                                                                     a
chivos que no est´n bajo control del repositorio:
                 a

filename.mine El archivo de la copia de trabajo.
filename.rOLDREV La revisi´n anterior (sin cambios).
                         o
filename.rNEWVER La nueva revisi´n obtenida del repositorio central al
                               o
     actualizar.

    Subversion no le permitir´ subir cambios hasta que estos tres archivos hayan
                             a
sido borrados.
    Puede solucionarlo de tres maneras:

Manualmente Editando el archivo de la copia de trabajo y ejecutando svn
resolved FILENAME.

Sobreescribiendo el archivo Puede sobreescribir el archivo local1 con uno
de los anteriores y ejecutando tambi´n svn resolved FILENAME.
                                    e
  1 mv   filename.rNEWVER filename


                                        6
Usando svn revert Deshace los cambios que ha realizado para que pueda
volver a editar el archivo. No es necesario ejecutar svn resolved FILENAME.

3.5.     Enviar los cambios
   Una vez haya realizado todos los cambios pertinentes, puede subirlos usando
svn commit. Es necesario suministrar un mensaje para el historial. Puede
hacerlo como par´metro:
                a
$ svn commit --message quot;Nuevas modificacionesquot;
     O tomando el mensage del contenido de un archivo:
 $ svn commit --file logmsg
   Y, en el caso de que no se especifique, se ejecutar´ el editor configurado por
                                                     a
defecto2 para que pueda escribir el mensaje. Puede ignorarlo y no guardar el
archivo (en cuyo caso se le preguntar´ si desea continuar) o dejarlo vac´
                                     a                                  ıo.


4.      Examinar el historial
   Los comandos para recuperar informaci´n sobre el historial del repositorio
                                        o
o de un archivo en concreto son:

svn log Muestra el historial de qui´n realiz´ los cambios, cu´ndo y el mensaje
                                   e        o                a
enviado. Par´metros:
            a
svn log –revision 5:19 Muestra el historial entre las revisiones 5 y 19 en or-
     den cronol´gico.
               o
svn log -r 19:5 Muestra el historial entre las revisiones 5 y 19 en orden inverso.
svn log -r 8 Muestra el historial del cambio 8.
    El par´metro -v indica que muestre tambi´n los archivos modificados, elimi-
           a                                e
nados o a˜adidos.
           n
    Tambi´n se le puede pasar un archivo como par´metro para mostrar s´lo su
           e                                      a                     o
historial: svn log README

svn diff Como ya se ha dicho, muestra las diferencias entre dos revisiones de
uno o varios archivos. Sin par´metros lo muestra entre la copia de trabajo y la
                              a
ultima revisi´n, aunque puede compararse con una anterior:
´            o
$ svn diff --revision 3 README
     O dos revisiones entre ellas:
$ svn diff --revision 2:3 README
  2 A trav´s de la variable del sistema EDITOR o a trav´s del fichero de configuraci´n de
          e                                            e                          o
Subversion (.subversion/config)


                                          7
svn cat    Permite mostrar el contenido de un archivo en una revisi´n en con-
                                                                   o
creto:
 $ svn cat --revision 3 README

svn list   Muestra el contenido de un directorio del repositorio.

Recuperar una revisi´n anterior Pueden emplearse los comandos svn up-
                    o
date y svn checkout para obtener una revisi´n antigua:
                                           o

 $ svn checkout --revision 50


5.     Otros comandos
svn cleanup Si por alg´n error un commit falla, este comando env´ el men-
                            u                                          ıa
saje de historial si no se lleg´ a hacer y/o desbloquea los archivos y directorios
                               o
bloqueados.

svn import Copia un ´rbol de directorios sin control a un repositorio. El
                           a
directorio original queda como est´, as´ que para poder trabajar sobre una copia
                                  a ı
versionada es necesario hacer un checkout.

 $ svn import directorio svn://osl.uca.es/proyecto

   Resulta util para enviar a un repositorio reci´n creado todos los archivos de
           ´                                     e
un proyecto que ya exista para poder mantenerlo versionado.


6.     Ramas
6.1.    ¿Qu´ es una rama?
           e
    Supongamos que tenemos un documento del que nos piden una copia con
algunas diferencias del original. Obviamente lo que se hace es crear una copia
sobre la que realizar los cambios, conservando el original. Se trabaja sobre ambos
archivos, modificando a veces uno, a veces otro.
    Ahora imaginemos que hay un error en el archivo que es anterior a esta
divisi´n, por lo que posiblemente est´ en ambas copias, que son pr´cticamente
      o                                a                               a
iguales, por lo que hay que realizar el mismo cambio en las dos.
    Esta es la idea de una rama: archivos mantenidos de forma independiente
pero que comparten un pasado com´n. Una rama siempre empieza como una
                                       u
copia de algo, pero teniendo su propio historial desde entonces.

6.2.    Trabajando con las ramas
   En este apartado se describe de una manera muy superficial el trabajo con
ramas en un repositorio.


                                        8
6.2.1.   Crear una nueva rama
   Es tan f´cil como crear una copia.
           a

 $ svn copy trunk branches/mi_rama

Los datos no se duplican en el repositorio, as´ que no hace falta preocuparse por
                                              ı
un incremento de tama˜o. n
   Nota: Por convenci´n suelen crearse bajo el directorio “branches”, pero puede
                       o
usarse cualquier otro: “ramas”, “estable”, etc´tera.
                                                e

6.2.2.   Trabajar con la rama
    Puede hacerlo de forma normal, como un directorio m´s del proyecto, aunque
                                                       a
es posible (como con todos los subdirectorios de un proyecto) de obtenerlo por
separado:

 $ svn checkout svn://osl.uca.es/proyecto/branches/mi_rama

6.2.3.   Copiar cambios entre ramas
   Mientras que se trabaje con copias distintas no hay problema de que los
cambios se pisen, pero hay que tener en cuenta que conforme m´s tiempo se
                                                                   a
trabaje por separado, m´s dif´ puede ser unir los cambios con el tronco del
                          a    ıcil
proyecto sin que surjan multitud de conflictos.
   Para aplicar los cambios realizados en la rama principal sobre la copia en las
que estamos trabajando se emplea el comando svn merge, muy similar a svn
diff, con la diferencia de que aplica los cambios en la copia de trabajo en lugar
de mostrar los cambios por consola, marcando el archivo como modificado.

 $ svn merge svn://osl.uca.es/proyecto/trunk

   Puede especificarse el directorio sobre el que aplicar los cambios.

$ svn merge svn://osl.uca.es/proyecto/trunk mi_rama

    Una vez hecho esto puede actualizarse el repositorio indicando que se ha
aplicado una modificaci´n sacada de la rama principal.
                      o

 $ svn commit --message quot;Importado los cambios desde trunkquot;

   Para consejos sobre como usar estas funciones, consulte el cap´
                                                                 ıtulo 4 de [4].

6.2.4.   Mantenimiento de ramas
Directorios Se recomienda mantener una estructura de directorios est´ndar   a
que facilite el trabajo con ramas. Si el repositorio s´lo contiene un proyecto:
                                                      o

     /trunk


                                        9
/branches

       /tags

     Si contiene m´s se replica la estructura anterior:
                  a

       /proyecto1/trunk

       /proyecto1/branches

       /proyecto1/tags

       /proyecto2/trunk

       /proyecto2/branches

       /proyecto2/tags

   En cualquier caso no es obligatorio, puede elegir la distribuci´n que m´s le
                                                                  o       a
guste.

Vida de los datos Una vez ha finalizado el trabajo en una rama y se han
integrado los datos en la rama principal, puede borrarse usando svn delete.
   Otra utilidad de las ramas es cuando se quiere liberar una versi´n estable,
                                                                     o
por lo que hay que trabajar en solucionar bugs, pero sin dejar de a˜adir nuevas
                                                                   n
funciones:

 $ svn copy svn://osl.uca.es/proyecto/trunk
            svn://osl.uca.es/proyecto/branches/estable-1.0

    De esta forma se pueden seguir a˜adiendo caracter´
                                     n                 ısticas en /trunk y traba-
jar s´lo en solucionar errores en /branches/estable-1.0
     o


7.      Administraci´n
                    o
    Los detalles sobre la administraci´n se explicar´n s´lo de forma superficial.
                                      o             a o
Si quiere m´s informaci´n: Version Control with Subversion[4]
           a             o

7.1.     Utilidades
svnlook Se emplea para examinar revisiones y transacciones. Es de s´lo lectura,
                                                                      o
     no modifica el repositorio. Sus funciones se salen del car´cter introductorio
                                                              a
     de este ap´ndice. Para m´s informaci´n puede ejecutar svnlook help.
               e              a            o

svnadmin Permite ejecutar operaciones de mantenimiento. Los par´metros
                                                               a
    que acepta son:

       create Crea un nuevo repositorio: svnadmin create proyecto.


                                         10
deltify Comprime el repositorio almacenando s´lo las diferencias respecto
                                                    o
            a la versi´n anterior.
                      o
       dump Vuelca el contenido del repositorio empleando un formato porta-
          ble.
       hotcopy Crea una copia de un repositorio de forma segura, aunque est´ sien-
                                                                           e
           do usado.
       list-dblogs Muestra los archivos de historial de Berkeley DB asociados
            con el repositorio.
       list-unused-dblogs Muestra los archivos de historial de Berkeley DB
            asociados con el repositorio y que ya no son usados. Pueden borrarse
            sin problemas, aunque podr´ almacenarse para recuperarse de una
                                         ıan
            perdida de datos catastr´fica.
                                     o
       load Carga una serie de revisiones en un repositorio a partir de un flujo
           de datos que emplee el mismo formato de volcado que el subcomando
           dump.
       lstxns Muestra la lista de transacciones que todav´ no han sido enviadas.
                                                         ıa
       recover Realiza una recuperaci´n en caso de error.
                                     o
       rmtxns Elimina las transacciones limpiamente.
       setlog Sustituye el mensaje de historial de una revisi´n en concreto por
                                                             o
            otro nuevo.
       verify Comprueba la integridad del repositorio.

7.2.     Restaurar un repositorio
    Pr´cticamente cualquier error - corrupci´n de datos, cambios no deseados,...
      a                                     o
- puede solucionarse empleando el comando svnadmin recover REPOSITO-
RIO. Antes de ejecutarlo debe asegurase de que:
  1. No haya ning´n proceso accediendo al repositorio.
                 u
  2. Es el usuario propietario del repositorio. No solo como root, ya que es
     posible que se generen de nuevo algunos archivos, y si se crean como root
     no ser´n despu´s accesibles.
           a        e

7.3.     Crear una copia de seguridad
    Pueden realizarse de dos maneras: una copia completa o incremental.
    Una copia completa es b´sicamente una duplicaci´n del repositorio. Ahora
                               a                        o
bien, a menos que deshabilite los accesos al repositorio puede obtener una copia
inconsistente si se est´n realizando cambios mientras realiza la copia, as´ que lo
                       a                                                  ı
correcto es usar svnadmin hotcopy o bien un script suministrado por Subver-
sion: hot-backup.py - puede encontrarlo en tools/backup dentro del directorio
de instalaci´n de Subversion.
            o
   Para obtener una copia incremental puede usar svnadmin dump –incremental:


                                       11
$ svnadmin dump repositorio 0:100 > dump01
 $ svnadmin dump 101:200 > dump02
 $ svnadmin dump 201:300 > dump03


8.        Configuraci´n del servidor
                    o
   Aunque Subversion permite usar, gracias a su capa de abstracci´n, cualquier
                                                                 o
protocolo de red, en realidad actualmente s´lo existen dos servidores: Apache
                                           o
con el m´dulo mod dav svn o svnserve, un peque˜o servidor independiente.
        o                                         n

8.1.       svnserve
       Este servidor puede lanzarse de tres formas diferentes.

inetd
 $ svnserve -i
    De esta forma svnserve se comunica con svn a trav´s de la entrada y salida
                                                         e
est´ndar.
   a
    Si su sistema utiliza un demonio inetd, puede editar el archivo /etc/inetd.conf
y a˜adirle la siguiente l´
   n                      ınea:

 svn stream tcp nowait USUARIO /usr/bin/svnserve svnserve -i

       Donde USUARIO es el usuario que tiene permisos para acceder al reposito-
rio.

Demonio
 $ svnserve -d
    De esta forma escuchar´ en el puerto 3690, aunque puede cambiarlo usando
                          a
el par´metro –listen-port=.
      a

T´ nel
 u
 $ svnserve -t
    De esta forma presupone que un programa como RSH o SSH ha autentificado
al usuario y que se ha invocado un servicio svnserve.
   Cuando se ejecuta el servidor de esa forma, el cliente debe especificar la ruta
absoluta del repositorio:

 $ svn checkout svn://servidor/usr/local/repositorios/proyecto

  Para incrementar la seguridad puede limitarse el acceso a un subdirectorio
empleando el par´metro -r.
                a


                                          12
$ svnserve -d -r /usr/local/repositorios
   De esta forma se acceder´
                           ıa:
 $ svn checkout svn://servidor/proyecto

8.1.1.   Autenticaci´n y autorizaci´n
                    o              o
Archivo de usuarios y realm En el archivo svnserve.conf, dentro del di-
rectorio conf/ del repositorio, bajo la secci´n [general] se especifican: el archivo
                                             o
que contiene los usuarios, el nombre de repositorio y los controles de acceso en
funci´n de si se es un usuario autentificado o no.
     o
    svnserve.conf
[general]
password-db = archivo_contrase~as # Ruta absoluta o relativa
                              n
realm = Ejemplo

anon-access = read # Los usuarios an´nimos s´lo pueden leer.
                                     o       o
auth-access = write # Los usuarios registrados pueden escribir.
   Los permisos pueden ser: none, sin acceso; read, s´lo lectura; write, lectura
                                                     o
y escritura.
   archivo contrase˜as (el indicado en password-db)
                   n
[users]
juan = juanpasswd
ana = anapasswd

   Puede ajustarse los permisos por directorios dentro de un repositorio, pero
eso no se cubrir´ en este documento.
                a

SSH Lo c´modo del m´todo anterior es que no es necesario crear cuentas del
             o            e
sistema por cada usuario, pero si se quiere aprovechar las cuentas de usuarios
puede usarse svnserve a trav´s de un t´nel SSH.
                              e         u
    Basta con usar la ruta de la forma: svn+ssh://servidor/repositorio
    Como en la forja se utiliza el m´todo del archivo de usuarios por cada repo-
                                    e
sitorio, si quiere m´s informaci´n sobre esta posibilidad, consulte [4]
                    a           o

8.2.     Apache httpd
    Un repositorio puede hacerse accesible a trav´s del servidor Apache y un
                                                   e
m´dulo, usando el protocolo WebDAV[3], una extensi´n del protocolo HTTP.
  o                                                   o
    Para obtener informaci´n sobre c´mo configurar un servidor Apache, puede
                           o         o
consultar [1]
    Debe tener instalado el servidor Apache httpd 2.0, el m´dulo mod dav (que
                                                            o
viene con el servidor) y mod dav svn.
    Una vez est´ todo instalado, aseg´rese de que ambos m´dulos sean cargados
                e                    u                     o
al iniciar Apache. Puede hacerse en versiones antiguas a˜adiendo en httpd.conf
                                                        n


                                        13
LoadModule dav_module             modules/mod_dav.so
LoadModule dav_svn_module         modules/mod_dav_svn.so

    O, en versiones m´s reciente, a trav´s de /etc/apache2/mods-enabled, crean-
                     a                  e
do en su interior enlaces simb´licos a los m´dulos dav.load y a dav svn.load
                                o              o
situados en /etc/apache2/mods-available.
    Una vez hecho esto es necesario hacer accesible el repositorio, lo que se pue-
de hacer de dos formas, o haciendo accesible unicamente el repositorio de un
                                                 ´
proyecto o el directorio que contiene los repositorios de varios proyectos. Esta
segunda forma es la util en el caso de la forja. Para que Apache sepa qu´ di-
                      ´                                                       e
rectorio debe hacer accesible, escriba en el archivo httpd.conf o apache2.conf
(dependiendo de la versi´n):
                         o

<Location /svn>
DAV svn
SVNParentPath /usr/local/repositorio
</Location>

8.2.1.   Autenticaci´n
                    o
Autenticaci´n HTTP b´sica Usando la utilidad htpasswd que proporcio-
            o            a
na Apache. Lo primero es a˜adir los usuarios y sus contrase˜as:
                          n                                n

# Se pasa el par´metro -c para crear el archivo.
                a
# -m es para cifrar la contrase~a usando MD5
                                n
$ htpasswd -cm /etc/svn-auth juan
New password: ****
Re-type new password: ****
Adding password for user juan
$ htpasswd -m /etc/svn-auth ana
New password: ***
Re-type new password: ***
Adding password for user ana

   Una vez hecho esto, es necesario especificar en el fichero de configuraci´n
                                                                         o
que se quiere emplear este fichero para la autenticaci´n:
                                                     o

<Location /svn>
DAV svn
SVNParentPath /usr/local/repositorio
AuthType basic
AuthName quot;Subversionquot;
AuthUserFile /etc/svn-auth
Require valid-user # Todas las conexiones deben ser identificadas
</Location>




                                       14
Certificado SSL Tambi´n pueden usarse conexiones seguras (https), pero
                          e
c´mo generar certificados y configurar Apache para que los use se escapa de los
 o
objetivos de esta gu´ Puede consultar el manual de Apache si le interesa el
                    ıa.
tema.

8.2.2.   Opciones de acceso
    Con las opciones anteriores cualquier usuario autenticado puede escribir y
leer del repositorio, mientras que los no autenticados no pueden leerlo.
    Si se quiere permitir a los usuarios an´nimos leer y a los registrados leer y
                                           o
escribir:

<Location /svn>
DAV svn
SVNParentPath /usr/local/repositorio
AuthType basic
AuthName quot;Subversionquot;
AuthUserFile /etc/svn-auth

<LimitExcept GET PROPFIND OPTIONS REPORT>
# Hace falta identificarse salvo para las operaciones de lectura
Require valid-user
</LimitExcept>
</Location>

    Empleando el m´dulo mod authz svn puede limitarse el acceso por direc-
                    o
torios. Para m´s informaci´n al respecto, consulte [4], ya que est´ m´s all´ de
              a           o                                       a a      a
esta gu´ r´pida.
        ıa a


Referencias
[1] Apache httpd. http://httpd.apache.org/.

[2] Detailed description of unified format. http://www.gnu.org/software/
    diffutils/manual/html node/Detailed-Unified.html.
[3] Webdav. http://www.webdav.org.

[4] C.Michael Pilato Ben Collins-Sussman, Brian W. Fitzpatrick. Version Con-
    trol with Subversion. TBA, 2004.




                                       15

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Como instalar unix erazo gloria
Como instalar unix erazo gloriaComo instalar unix erazo gloria
Como instalar unix erazo gloria
 
gestio de paquetes linux
gestio de paquetes linuxgestio de paquetes linux
gestio de paquetes linux
 
Actividad3.1
Actividad3.1Actividad3.1
Actividad3.1
 
Fail2ban instalacion configuracion
Fail2ban instalacion configuracionFail2ban instalacion configuracion
Fail2ban instalacion configuracion
 
commands and options dpkg, rpm, yum and apt
commands and options dpkg, rpm, yum and aptcommands and options dpkg, rpm, yum and apt
commands and options dpkg, rpm, yum and apt
 
Comandos yum
Comandos yumComandos yum
Comandos yum
 
Manual linux
Manual linuxManual linux
Manual linux
 
Manual de linux
Manual de linuxManual de linux
Manual de linux
 
Comandos permisos linux centos
Comandos permisos linux centosComandos permisos linux centos
Comandos permisos linux centos
 
Gestion de paquetes
Gestion de paquetesGestion de paquetes
Gestion de paquetes
 
FROM lost to the Docker 2020
FROM lost to the Docker 2020FROM lost to the Docker 2020
FROM lost to the Docker 2020
 
6 la shell bash
6 la shell bash6 la shell bash
6 la shell bash
 
TUTORIAL SHELL WINDOWS
TUTORIAL SHELL WINDOWSTUTORIAL SHELL WINDOWS
TUTORIAL SHELL WINDOWS
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 
Comandos de windows
Comandos de windowsComandos de windows
Comandos de windows
 
Manual instalacion svn
Manual instalacion svnManual instalacion svn
Manual instalacion svn
 
Admin Manual
Admin ManualAdmin Manual
Admin Manual
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 
Curso Basico Ponencia 1
Curso Basico Ponencia 1Curso Basico Ponencia 1
Curso Basico Ponencia 1
 
26 configuración del sistema
26  configuración del sistema26  configuración del sistema
26 configuración del sistema
 

Destacado

Estacion MetereolóGica De Cercedilla
Estacion MetereolóGica De CercedillaEstacion MetereolóGica De Cercedilla
Estacion MetereolóGica De Cercedillamiguel martinez
 
Amb Velo Per S’Escola 1
Amb Velo Per S’Escola 1Amb Velo Per S’Escola 1
Amb Velo Per S’Escola 1salva2
 
Proyct.Educativo
Proyct.EducativoProyct.Educativo
Proyct.Educativoguestf6e71e
 
E L T U N I N G
E L  T U N I N G E L  T U N I N G
E L T U N I N G jesus
 
Rescatado
RescatadoRescatado
Rescatadoantara
 
PRACTICA 22. MANEJO DE POWER POINT
PRACTICA 22. MANEJO DE POWER POINTPRACTICA 22. MANEJO DE POWER POINT
PRACTICA 22. MANEJO DE POWER POINTtortas
 
Exportaciones Iluminacion Powerpoint
Exportaciones Iluminacion PowerpointExportaciones Iluminacion Powerpoint
Exportaciones Iluminacion PowerpointHuBoGoss
 
deportividad
deportividaddeportividad
deportividadyfa
 
0 lap trinh tien tien topics
0 lap trinh tien tien topics0 lap trinh tien tien topics
0 lap trinh tien tien topicsvantaihpp
 
Cartasal NiñO JesúS
Cartasal NiñO JesúSCartasal NiñO JesúS
Cartasal NiñO JesúSagberbel
 
El legado de Fukuoka
El legado de FukuokaEl legado de Fukuoka
El legado de FukuokaTeresa Jular
 
Ginecología. Presentaciones en medicina: el espacio en blanco
Ginecología. Presentaciones en medicina: el espacio en blancoGinecología. Presentaciones en medicina: el espacio en blanco
Ginecología. Presentaciones en medicina: el espacio en blancoEmilio Rodríguez Bilbao
 
Ya no quiero la cheyen apa
Ya no quiero la cheyen apaYa no quiero la cheyen apa
Ya no quiero la cheyen apaEllery Payan
 

Destacado (16)

Estacion MetereolóGica De Cercedilla
Estacion MetereolóGica De CercedillaEstacion MetereolóGica De Cercedilla
Estacion MetereolóGica De Cercedilla
 
Amb Velo Per S’Escola 1
Amb Velo Per S’Escola 1Amb Velo Per S’Escola 1
Amb Velo Per S’Escola 1
 
Trabajo realizado con 5°.
Trabajo realizado con 5°.Trabajo realizado con 5°.
Trabajo realizado con 5°.
 
Proyct.Educativo
Proyct.EducativoProyct.Educativo
Proyct.Educativo
 
E L T U N I N G
E L  T U N I N G E L  T U N I N G
E L T U N I N G
 
Rescatado
RescatadoRescatado
Rescatado
 
Trabajo Rudy
Trabajo RudyTrabajo Rudy
Trabajo Rudy
 
PRACTICA 22. MANEJO DE POWER POINT
PRACTICA 22. MANEJO DE POWER POINTPRACTICA 22. MANEJO DE POWER POINT
PRACTICA 22. MANEJO DE POWER POINT
 
Exportaciones Iluminacion Powerpoint
Exportaciones Iluminacion PowerpointExportaciones Iluminacion Powerpoint
Exportaciones Iluminacion Powerpoint
 
deportividad
deportividaddeportividad
deportividad
 
0 lap trinh tien tien topics
0 lap trinh tien tien topics0 lap trinh tien tien topics
0 lap trinh tien tien topics
 
Cartasal NiñO JesúS
Cartasal NiñO JesúSCartasal NiñO JesúS
Cartasal NiñO JesúS
 
El legado de Fukuoka
El legado de FukuokaEl legado de Fukuoka
El legado de Fukuoka
 
Ginecología. Presentaciones en medicina: el espacio en blanco
Ginecología. Presentaciones en medicina: el espacio en blancoGinecología. Presentaciones en medicina: el espacio en blanco
Ginecología. Presentaciones en medicina: el espacio en blanco
 
Ya no quiero la cheyen apa
Ya no quiero la cheyen apaYa no quiero la cheyen apa
Ya no quiero la cheyen apa
 
Barco
BarcoBarco
Barco
 

Similar a Tutorial de subvesion

Sistemas para el Control de Versiones de Código
Sistemas para el Control de Versiones de CódigoSistemas para el Control de Versiones de Código
Sistemas para el Control de Versiones de CódigoJesus Castagnetto
 
Presentacion Subversion
Presentacion SubversionPresentacion Subversion
Presentacion SubversionCesar Yanez
 
Presentación SUbversion
Presentación SUbversionPresentación SUbversion
Presentación SUbversionrxif914u41
 
PPT Git GitHub
PPT Git GitHubPPT Git GitHub
PPT Git GitHubdrsevilla
 
Subversion Press
Subversion PressSubversion Press
Subversion Pressjlrvpuma
 
Bazaar la herramienta para el control de versiones de forma distribuida
Bazaar la herramienta para el control de versiones de forma distribuidaBazaar la herramienta para el control de versiones de forma distribuida
Bazaar la herramienta para el control de versiones de forma distribuidaEsteban Saavedra
 
[ES] Control de versiones con subversion
[ES] Control de versiones con  subversion[ES] Control de versiones con  subversion
[ES] Control de versiones con subversionEudris Cabrera
 
Control de versiones con Subversion
Control de versiones con SubversionControl de versiones con Subversion
Control de versiones con Subversionnqnwebs
 
Subversion - buenas prácticas
Subversion - buenas prácticasSubversion - buenas prácticas
Subversion - buenas prácticasIker Canarias
 
Técnicas avanzadas de control de versiones
Técnicas avanzadas de control de versionesTécnicas avanzadas de control de versiones
Técnicas avanzadas de control de versionesAngel Armenta
 
Lp II clase03 - Entornos de Desarrollo
Lp II clase03 - Entornos de DesarrolloLp II clase03 - Entornos de Desarrollo
Lp II clase03 - Entornos de DesarrolloAngelDX
 
Archivos distribuidos
Archivos distribuidosArchivos distribuidos
Archivos distribuidosTensor
 
Archivos distribuidos
Archivos distribuidosArchivos distribuidos
Archivos distribuidosTensor
 

Similar a Tutorial de subvesion (20)

Subversion
SubversionSubversion
Subversion
 
Sistemas para el Control de Versiones de Código
Sistemas para el Control de Versiones de CódigoSistemas para el Control de Versiones de Código
Sistemas para el Control de Versiones de Código
 
Presentacion Subversion
Presentacion SubversionPresentacion Subversion
Presentacion Subversion
 
Presentación SUbversion
Presentación SUbversionPresentación SUbversion
Presentación SUbversion
 
Versionamiento
VersionamientoVersionamiento
Versionamiento
 
PPT Git GitHub
PPT Git GitHubPPT Git GitHub
PPT Git GitHub
 
Subversion Press
Subversion PressSubversion Press
Subversion Press
 
Control de versiones y Subversion
Control de versiones y SubversionControl de versiones y Subversion
Control de versiones y Subversion
 
Bazaar la herramienta para el control de versiones de forma distribuida
Bazaar la herramienta para el control de versiones de forma distribuidaBazaar la herramienta para el control de versiones de forma distribuida
Bazaar la herramienta para el control de versiones de forma distribuida
 
[ES] Control de versiones con subversion
[ES] Control de versiones con  subversion[ES] Control de versiones con  subversion
[ES] Control de versiones con subversion
 
Control de versiones con Subversion
Control de versiones con SubversionControl de versiones con Subversion
Control de versiones con Subversion
 
Introduccion a vcs_y_svn_v3.0
Introduccion a vcs_y_svn_v3.0Introduccion a vcs_y_svn_v3.0
Introduccion a vcs_y_svn_v3.0
 
Desarrollo Subversivo
Desarrollo SubversivoDesarrollo Subversivo
Desarrollo Subversivo
 
Subversion - buenas prácticas
Subversion - buenas prácticasSubversion - buenas prácticas
Subversion - buenas prácticas
 
Técnicas avanzadas de control de versiones
Técnicas avanzadas de control de versionesTécnicas avanzadas de control de versiones
Técnicas avanzadas de control de versiones
 
Integrando sonar
Integrando sonarIntegrando sonar
Integrando sonar
 
Control de versiones
Control de versionesControl de versiones
Control de versiones
 
Lp II clase03 - Entornos de Desarrollo
Lp II clase03 - Entornos de DesarrolloLp II clase03 - Entornos de Desarrollo
Lp II clase03 - Entornos de Desarrollo
 
Archivos distribuidos
Archivos distribuidosArchivos distribuidos
Archivos distribuidos
 
Archivos distribuidos
Archivos distribuidosArchivos distribuidos
Archivos distribuidos
 

Más de Pablo Morales

AiR for Js Dev Pocket Guide
AiR for Js Dev Pocket GuideAiR for Js Dev Pocket Guide
AiR for Js Dev Pocket GuidePablo Morales
 
Manual Completo Php 5
Manual Completo Php 5Manual Completo Php 5
Manual Completo Php 5Pablo Morales
 
Teoria Del Caos Y Software
Teoria Del Caos Y SoftwareTeoria Del Caos Y Software
Teoria Del Caos Y SoftwarePablo Morales
 

Más de Pablo Morales (6)

AiR for Js Dev Pocket Guide
AiR for Js Dev Pocket GuideAiR for Js Dev Pocket Guide
AiR for Js Dev Pocket Guide
 
Metodologias Agiles
Metodologias AgilesMetodologias Agiles
Metodologias Agiles
 
2007 Zend Con Mvc
2007 Zend Con Mvc2007 Zend Con Mvc
2007 Zend Con Mvc
 
Manual Completo Php 5
Manual Completo Php 5Manual Completo Php 5
Manual Completo Php 5
 
Ruby Facil
Ruby FacilRuby Facil
Ruby Facil
 
Teoria Del Caos Y Software
Teoria Del Caos Y SoftwareTeoria Del Caos Y Software
Teoria Del Caos Y Software
 

Último

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 

Último (13)

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 

Tutorial de subvesion

  • 1. Introducci´n a Subversion o ´ Alejandro Alvarez Ayll´n o 21 de febrero de 2008 Este ap´ndice es una gu´ introductoria al sistema de control de versiones e ıa Subversion. Si necesita una documentaci´n completa puede consultar Version o Control with Subversion[4] 1. Introducci´n o 1.1. Qu´ es e Subversion es un sistema libre de control de versiones, es decir, controla los archivos y directorios y sus cambios a lo largo del tiempo. Un ´rbol de archivos se almacena en un repositorio central, que es como un a sistema de archivos normal, con la diferencia de que almacena todos los cambios realizados. Permite acceder a trav´s de la red, por lo que puede ser usado desde distintos e ordenadores, incentivando la colaboraci´n, ya que se trabaja sobre el mismo o conjunto de datos. Dado que los cambios no se centralizan, se progresa m´s r´pidamente, sin a a perder adem´s calidad en el proceso, ya que si se realiza un cambio erroneo a puede deshacerse. Adem´s, puede controlar desde c´digo fuente en cualquier lenguaje hasta a o ediciones de v´ ıdeo. 1.2. Vocabulario A continuaci´n se describen algunos t´rminos de uso habitual en este ´mbito. o e a L´ ınea base (“Baseline”) Una revisi´n aprobada a partir de la que se pueden o realizar cambios. Rama (“branch”) Conjunto de ficheros con dos o m´s copias mantenidas de a forma independiente. “Check-out” (“checkout”, “co”) Crear una copia para trabajar localmen- te. 1
  • 2. “Commit” (“check-in”, “ci”, “install”, “submit”) Escribir los cambios locales sobre el repositorio. Conflicto Ocurre cuando se realizan cambios por diferentes partes al mismo documento, y el sistema es incapaz de reconciliar los mismos. Cambio (“change”, “diff”, “delta”) Representa una modificaci´n de un do- o cumento. Lista de cambios (“changelist”, “change set”, “patch”) Conjunto de cam- bios realizados en un unico commit. ´ Exportaci´n (“export”) Una exportaci´n es similar a un check-out, salvo o o porque crea un ´rbol de directorios limpio sin los metadatos de control de a versiones presentes en la copia de trabajo. Importaci´n (“import”) Es la acci´n de copia un ´rbol de directorios local o o a en el repositorio por primera vez. Integraci´n (“merge”) Una integraci´n une dos conjuntos de cambios sobre o o un fichero o un conjunto de ficheros en una revisi´n unificada de dicho o fichero. Puede suceder cuando un usuario actualiza su copia local con los cambios realizados por otros usuarios. An´logamente, este mismo proceso puede a ocurrir en el repositorio cuando un usuario intenta subir sus cambios. O despu´s de que se haya creado una rama y sea necesario aplicar en ella e un cambio realizado en otra (solucionar un error anterior a la divisi´n, por o ejemplo) O cuando se quieran fundir dos ramas diferentes de desarrollo. Repositorio El repositorio es el lugar en el que se almacenan los datos actua- lizados e hist´ricos o Integraci´n inversa El proceso de fundir ramas de diferentes equipos en la o rama principal del sistema de versiones. Revisi´n (“versi´n”) Una revisi´n es una versi´n dentro de una cadena de o o o o cambios. Etiqueta (“tag”, “release”) Se puede etiquetar un conjunto de ficheros con un nombre f´cil de identificar, o con un n´mero de revisi´n. a u o Resolver Intervenci´n del usuario para atender un conflicto entre diferentes o cambios al mismo documento. Actualizaci´n (“sync”) Integraci´n de los cambios que han sido hechos en o o el repositorio sobre la copia de trabajo local. Copia de trabajo Copia local de los ficheros de un repositorio. Todo el trabajo realizado sobre los ficheros en un repositorio se realiza inicialmente sobre una copia de trabajo. 2
  • 3. 1.2.1. Caracter´ ısticas Control de directorios Subversion implementa un sistema de ficheros “vir- tual” que controla los cambios a todo el ´rbol de directorios. a Control “verdadero” Subversion permite el a˜adido, borrado, copia y re- n nombrado de archivos y directorios, teniendo cada nuevo archivo un his- torial propio aunque el nombre coincida con un archivo antiguo que fuera borrado. Env´ at´micos Un conjunto de cambios se aplican al repositorio completa- ıos o mente o no se aplica ninguno, evitando inconsistencias. Metadatos versionados A cada archivo o directorio se le puede aplicar cual- quier propiedad que se quiera, manteniendo un historial de los cambios. Elecci´n de las capas de red Subversion abstrae el acceso al repositorio, por o lo que se puede implementar distintas maneras de hacerlo a trav´s de la e red: como m´dulo de Apache HTTP Server, por ejemplo. Tambi´n existe o e un peque˜o y ligero servidor que puede usarse f´cilmente a trav´s de SSH. n a e Manejo consistente de los datos La diferencia entre archivos se almacena usando un algoritmo diferencial binario, por lo que se puede aplicar a archivos de texto o binarios. 2. Instalaci´n o Subversion est´ construido sobre una capa de portabilidad llamada APR a (Apache Portable Runtime library), lo que significa que es capaz de funcionar en cualquier sistema operativo en el que el servidor Apache httpd se ejecute: Windows, Linux, todos los BSD, Mac OS X, Netware, etc. La manera m´s sencilla de instalarlo es descargar el paquete construido para a su sistema operativo desde el sitio web de Subversion (http://subversion.tigris.org). Normalmente pueden encontrarse instaladores gr´ficos para los usuarios de sis- a temas operativos de Microsoft. Si usa un sistema Unix-like, puede usar el sistema nativo de paquetes (RPMs, DEBs, etc.) para obtener Subversion. Como alternativa, puede compilar Subversion directamente a partir de la ultima versi´n del c´digo fuente. Antes de descomprimirlo siga las instruccio- ´ o o nes del archivo INSTALL. Tenga en cuenta que un paquete contiene todo lo necesario para compilar un cliente capaz de conectarse a repositorios remotos, pero opciones adicionales pueden tener otras dependencias (como Berkeley DB o Apache httpd). Si quiere compilar una versi´n completa debe asegurarse de o que tiene todos los paquetes listados en el archivo INSTALL. Si quiere trabajar en el c´digo, puede usar su cliente para obtener el c´digo o o m´s reciente. a 3
  • 4. 3. Gu´ b´sica r´pida ıa a a Lo primero que debe tener en cuenta es el comando que le resultar´ m´s util a a ´ para empezar a usar Subversion: svn help. Puede usarlo de la forma svn help COMANDO para obtener ayuda sobre el comando pasado como par´metro. a 3.1. Checkout inicial Lo primero que debe hacer es obtener una copia de trabajo local a partir del repositorio central: $ svn checkout svn://osl.uca.es/proyecto Esto crear´ un nuevo directorio llamado “proyecto”, dentro del que se des- a cargar´n todos los archivos del mismo. Una vez hecho esto ya puede empezar a a trabajar como lo har´ normalmente. ıa NOTA: Aunque puede usarlo como si fuera un directorio normal, para copiar o mover archivos deber´ usar los comandos svn copy y a svn move en lugar de los habituales. Dentro de cada directorio del proyecto se crear´ otro directorio llamado a “.svn”. No borre ni modifique su contenido bajo ning´n concepto. u Si quiere descargar el proyecto en un directorio con un nombre diferente, puede hacerlo: $ svn checkout svn://osl.uca.es/proyecto MiProyecto De esta forma en lugar de crear un directorio llamado “proyecto” se crear´ uno a llamado “MiProyecto”. 3.2. Ciclo de trabajo b´sico a Pese a la gran variedad de comandos que tiene Subversion, la mayor´ de las ıa veces bastan unos pocos de ellos. El ciclo normal es: 3.2.1. Actualizar la copia de trabajo Cuando quiere actualizar su copia de trabajo con el repositorio central debe ejecutar svn update. $ svn update U INSTALL U README Cuando se ejecuta esta orden se muestra una lista de los archivos actualizados junto con una letra que indica el tipo de cambio: 4
  • 5. U El archivo se ha actualizado. A El archivo se ha a˜adido. n D El archivo ha sido borrado. R Se ha sustituido el archivo por otro con el mismo nombre. Subversion los considera diferentes. G El archivo actualizado hab´ sido modificado localmente, pero los cambios ıa no se pisan, as´ que se han “fundido” ambas versiones. ı C Los cambios locales y los realizados en el repositorio se solapan. Es necesario solucionar manualmente el conflicto. 3.2.2. Realizar cambios Hay dos tipos de cambios: Cambios en un archivo. Editarlo normalmente con el programa adecuado: editor de texto, de gr´ficos, etc. Subversion detecta autom´ticamente los a a cambios. Cambios en el ´rbol de directorio. Pueden a˜adirse archivos o directo- a n rios, borrarlos, moverlos, copiarlos, etc. Para estos cambios debe usar los comandos de Subversion. Se realizan localmente en el acto, y en el reposi- torio cuando se env´ los cambios. ıen Los comandos son: svn add A A˜ade el archivo (o directorio) A (y todo su contenido). n svn delete A Elimina el archivo (o directorio) A (y todo su contenido). svn copy A B Duplica el archivo (o directorio) A con el nombre B y lo a˜ade n al repositorio. svn move A B Equivalente a svn copy A B; svn delete A svn mkdir A Crea un nuevo directorio A. 3.3. Revisar los cambios Los siguientes comandos pueden emplearse sin necesidad de una conexi´n al o repositorio central. svn status Informa sobre todos los cambios realizados a archivos o al ´rbol de a directorios. Delante de cada nombre de archivo aparecen tres columnas. La primera se refiere al estado del archivo, la segunda al de sus propiedades y la tercera muestra una L cuando est´ bloqueado (locked ), posiblemente por a un commit en curso. Los valores que pueden aparecer en las dos primeras columnas son: 5
  • 6. A Ha sido a˜adido. n C En conflicto. D Marcado para borrar. M Modificado. R Marcado para ser reemplazado. X No est´ versionado pero est´ relacionado con definiciones externas (pa- a a ra m´s informaci´n consultar el manual de Subversion). a o ? No est´ bajo control. a ! Est´ bajo control pero no se encuentra o tiene alg´n error. Puede usar a u svn revert para recuperarlo. ˜ Est´ bajo control como un tipo diferente al que hay en la copia de a trabajo (por ejemplo, controlado como archivo y actualmente es un directorio). I No est´ bajo control y est´ marcado para que subversion lo ignore cuan- a a do se usen los comandos svn add, svn status y svn import. svn diff Muestra los cambios realizados sobre un archivo en concreto si se es- pecifica o sobre todos en general. Indica las l´ ıneas a˜adidas y eliminadas n usando el formato del diff unificado[2]. svn revert Deshace los cambios realizados sobre el fichero o directorio pasado como par´metro, volviendo a la revisi´n anterior. a o 3.4. Solucionar conflictos Si Subversion encuentra un conflicto al actualizar un fichero crear´ tres ar- a chivos que no est´n bajo control del repositorio: a filename.mine El archivo de la copia de trabajo. filename.rOLDREV La revisi´n anterior (sin cambios). o filename.rNEWVER La nueva revisi´n obtenida del repositorio central al o actualizar. Subversion no le permitir´ subir cambios hasta que estos tres archivos hayan a sido borrados. Puede solucionarlo de tres maneras: Manualmente Editando el archivo de la copia de trabajo y ejecutando svn resolved FILENAME. Sobreescribiendo el archivo Puede sobreescribir el archivo local1 con uno de los anteriores y ejecutando tambi´n svn resolved FILENAME. e 1 mv filename.rNEWVER filename 6
  • 7. Usando svn revert Deshace los cambios que ha realizado para que pueda volver a editar el archivo. No es necesario ejecutar svn resolved FILENAME. 3.5. Enviar los cambios Una vez haya realizado todos los cambios pertinentes, puede subirlos usando svn commit. Es necesario suministrar un mensaje para el historial. Puede hacerlo como par´metro: a $ svn commit --message quot;Nuevas modificacionesquot; O tomando el mensage del contenido de un archivo: $ svn commit --file logmsg Y, en el caso de que no se especifique, se ejecutar´ el editor configurado por a defecto2 para que pueda escribir el mensaje. Puede ignorarlo y no guardar el archivo (en cuyo caso se le preguntar´ si desea continuar) o dejarlo vac´ a ıo. 4. Examinar el historial Los comandos para recuperar informaci´n sobre el historial del repositorio o o de un archivo en concreto son: svn log Muestra el historial de qui´n realiz´ los cambios, cu´ndo y el mensaje e o a enviado. Par´metros: a svn log –revision 5:19 Muestra el historial entre las revisiones 5 y 19 en or- den cronol´gico. o svn log -r 19:5 Muestra el historial entre las revisiones 5 y 19 en orden inverso. svn log -r 8 Muestra el historial del cambio 8. El par´metro -v indica que muestre tambi´n los archivos modificados, elimi- a e nados o a˜adidos. n Tambi´n se le puede pasar un archivo como par´metro para mostrar s´lo su e a o historial: svn log README svn diff Como ya se ha dicho, muestra las diferencias entre dos revisiones de uno o varios archivos. Sin par´metros lo muestra entre la copia de trabajo y la a ultima revisi´n, aunque puede compararse con una anterior: ´ o $ svn diff --revision 3 README O dos revisiones entre ellas: $ svn diff --revision 2:3 README 2 A trav´s de la variable del sistema EDITOR o a trav´s del fichero de configuraci´n de e e o Subversion (.subversion/config) 7
  • 8. svn cat Permite mostrar el contenido de un archivo en una revisi´n en con- o creto: $ svn cat --revision 3 README svn list Muestra el contenido de un directorio del repositorio. Recuperar una revisi´n anterior Pueden emplearse los comandos svn up- o date y svn checkout para obtener una revisi´n antigua: o $ svn checkout --revision 50 5. Otros comandos svn cleanup Si por alg´n error un commit falla, este comando env´ el men- u ıa saje de historial si no se lleg´ a hacer y/o desbloquea los archivos y directorios o bloqueados. svn import Copia un ´rbol de directorios sin control a un repositorio. El a directorio original queda como est´, as´ que para poder trabajar sobre una copia a ı versionada es necesario hacer un checkout. $ svn import directorio svn://osl.uca.es/proyecto Resulta util para enviar a un repositorio reci´n creado todos los archivos de ´ e un proyecto que ya exista para poder mantenerlo versionado. 6. Ramas 6.1. ¿Qu´ es una rama? e Supongamos que tenemos un documento del que nos piden una copia con algunas diferencias del original. Obviamente lo que se hace es crear una copia sobre la que realizar los cambios, conservando el original. Se trabaja sobre ambos archivos, modificando a veces uno, a veces otro. Ahora imaginemos que hay un error en el archivo que es anterior a esta divisi´n, por lo que posiblemente est´ en ambas copias, que son pr´cticamente o a a iguales, por lo que hay que realizar el mismo cambio en las dos. Esta es la idea de una rama: archivos mantenidos de forma independiente pero que comparten un pasado com´n. Una rama siempre empieza como una u copia de algo, pero teniendo su propio historial desde entonces. 6.2. Trabajando con las ramas En este apartado se describe de una manera muy superficial el trabajo con ramas en un repositorio. 8
  • 9. 6.2.1. Crear una nueva rama Es tan f´cil como crear una copia. a $ svn copy trunk branches/mi_rama Los datos no se duplican en el repositorio, as´ que no hace falta preocuparse por ı un incremento de tama˜o. n Nota: Por convenci´n suelen crearse bajo el directorio “branches”, pero puede o usarse cualquier otro: “ramas”, “estable”, etc´tera. e 6.2.2. Trabajar con la rama Puede hacerlo de forma normal, como un directorio m´s del proyecto, aunque a es posible (como con todos los subdirectorios de un proyecto) de obtenerlo por separado: $ svn checkout svn://osl.uca.es/proyecto/branches/mi_rama 6.2.3. Copiar cambios entre ramas Mientras que se trabaje con copias distintas no hay problema de que los cambios se pisen, pero hay que tener en cuenta que conforme m´s tiempo se a trabaje por separado, m´s dif´ puede ser unir los cambios con el tronco del a ıcil proyecto sin que surjan multitud de conflictos. Para aplicar los cambios realizados en la rama principal sobre la copia en las que estamos trabajando se emplea el comando svn merge, muy similar a svn diff, con la diferencia de que aplica los cambios en la copia de trabajo en lugar de mostrar los cambios por consola, marcando el archivo como modificado. $ svn merge svn://osl.uca.es/proyecto/trunk Puede especificarse el directorio sobre el que aplicar los cambios. $ svn merge svn://osl.uca.es/proyecto/trunk mi_rama Una vez hecho esto puede actualizarse el repositorio indicando que se ha aplicado una modificaci´n sacada de la rama principal. o $ svn commit --message quot;Importado los cambios desde trunkquot; Para consejos sobre como usar estas funciones, consulte el cap´ ıtulo 4 de [4]. 6.2.4. Mantenimiento de ramas Directorios Se recomienda mantener una estructura de directorios est´ndar a que facilite el trabajo con ramas. Si el repositorio s´lo contiene un proyecto: o /trunk 9
  • 10. /branches /tags Si contiene m´s se replica la estructura anterior: a /proyecto1/trunk /proyecto1/branches /proyecto1/tags /proyecto2/trunk /proyecto2/branches /proyecto2/tags En cualquier caso no es obligatorio, puede elegir la distribuci´n que m´s le o a guste. Vida de los datos Una vez ha finalizado el trabajo en una rama y se han integrado los datos en la rama principal, puede borrarse usando svn delete. Otra utilidad de las ramas es cuando se quiere liberar una versi´n estable, o por lo que hay que trabajar en solucionar bugs, pero sin dejar de a˜adir nuevas n funciones: $ svn copy svn://osl.uca.es/proyecto/trunk svn://osl.uca.es/proyecto/branches/estable-1.0 De esta forma se pueden seguir a˜adiendo caracter´ n ısticas en /trunk y traba- jar s´lo en solucionar errores en /branches/estable-1.0 o 7. Administraci´n o Los detalles sobre la administraci´n se explicar´n s´lo de forma superficial. o a o Si quiere m´s informaci´n: Version Control with Subversion[4] a o 7.1. Utilidades svnlook Se emplea para examinar revisiones y transacciones. Es de s´lo lectura, o no modifica el repositorio. Sus funciones se salen del car´cter introductorio a de este ap´ndice. Para m´s informaci´n puede ejecutar svnlook help. e a o svnadmin Permite ejecutar operaciones de mantenimiento. Los par´metros a que acepta son: create Crea un nuevo repositorio: svnadmin create proyecto. 10
  • 11. deltify Comprime el repositorio almacenando s´lo las diferencias respecto o a la versi´n anterior. o dump Vuelca el contenido del repositorio empleando un formato porta- ble. hotcopy Crea una copia de un repositorio de forma segura, aunque est´ sien- e do usado. list-dblogs Muestra los archivos de historial de Berkeley DB asociados con el repositorio. list-unused-dblogs Muestra los archivos de historial de Berkeley DB asociados con el repositorio y que ya no son usados. Pueden borrarse sin problemas, aunque podr´ almacenarse para recuperarse de una ıan perdida de datos catastr´fica. o load Carga una serie de revisiones en un repositorio a partir de un flujo de datos que emplee el mismo formato de volcado que el subcomando dump. lstxns Muestra la lista de transacciones que todav´ no han sido enviadas. ıa recover Realiza una recuperaci´n en caso de error. o rmtxns Elimina las transacciones limpiamente. setlog Sustituye el mensaje de historial de una revisi´n en concreto por o otro nuevo. verify Comprueba la integridad del repositorio. 7.2. Restaurar un repositorio Pr´cticamente cualquier error - corrupci´n de datos, cambios no deseados,... a o - puede solucionarse empleando el comando svnadmin recover REPOSITO- RIO. Antes de ejecutarlo debe asegurase de que: 1. No haya ning´n proceso accediendo al repositorio. u 2. Es el usuario propietario del repositorio. No solo como root, ya que es posible que se generen de nuevo algunos archivos, y si se crean como root no ser´n despu´s accesibles. a e 7.3. Crear una copia de seguridad Pueden realizarse de dos maneras: una copia completa o incremental. Una copia completa es b´sicamente una duplicaci´n del repositorio. Ahora a o bien, a menos que deshabilite los accesos al repositorio puede obtener una copia inconsistente si se est´n realizando cambios mientras realiza la copia, as´ que lo a ı correcto es usar svnadmin hotcopy o bien un script suministrado por Subver- sion: hot-backup.py - puede encontrarlo en tools/backup dentro del directorio de instalaci´n de Subversion. o Para obtener una copia incremental puede usar svnadmin dump –incremental: 11
  • 12. $ svnadmin dump repositorio 0:100 > dump01 $ svnadmin dump 101:200 > dump02 $ svnadmin dump 201:300 > dump03 8. Configuraci´n del servidor o Aunque Subversion permite usar, gracias a su capa de abstracci´n, cualquier o protocolo de red, en realidad actualmente s´lo existen dos servidores: Apache o con el m´dulo mod dav svn o svnserve, un peque˜o servidor independiente. o n 8.1. svnserve Este servidor puede lanzarse de tres formas diferentes. inetd $ svnserve -i De esta forma svnserve se comunica con svn a trav´s de la entrada y salida e est´ndar. a Si su sistema utiliza un demonio inetd, puede editar el archivo /etc/inetd.conf y a˜adirle la siguiente l´ n ınea: svn stream tcp nowait USUARIO /usr/bin/svnserve svnserve -i Donde USUARIO es el usuario que tiene permisos para acceder al reposito- rio. Demonio $ svnserve -d De esta forma escuchar´ en el puerto 3690, aunque puede cambiarlo usando a el par´metro –listen-port=. a T´ nel u $ svnserve -t De esta forma presupone que un programa como RSH o SSH ha autentificado al usuario y que se ha invocado un servicio svnserve. Cuando se ejecuta el servidor de esa forma, el cliente debe especificar la ruta absoluta del repositorio: $ svn checkout svn://servidor/usr/local/repositorios/proyecto Para incrementar la seguridad puede limitarse el acceso a un subdirectorio empleando el par´metro -r. a 12
  • 13. $ svnserve -d -r /usr/local/repositorios De esta forma se acceder´ ıa: $ svn checkout svn://servidor/proyecto 8.1.1. Autenticaci´n y autorizaci´n o o Archivo de usuarios y realm En el archivo svnserve.conf, dentro del di- rectorio conf/ del repositorio, bajo la secci´n [general] se especifican: el archivo o que contiene los usuarios, el nombre de repositorio y los controles de acceso en funci´n de si se es un usuario autentificado o no. o svnserve.conf [general] password-db = archivo_contrase~as # Ruta absoluta o relativa n realm = Ejemplo anon-access = read # Los usuarios an´nimos s´lo pueden leer. o o auth-access = write # Los usuarios registrados pueden escribir. Los permisos pueden ser: none, sin acceso; read, s´lo lectura; write, lectura o y escritura. archivo contrase˜as (el indicado en password-db) n [users] juan = juanpasswd ana = anapasswd Puede ajustarse los permisos por directorios dentro de un repositorio, pero eso no se cubrir´ en este documento. a SSH Lo c´modo del m´todo anterior es que no es necesario crear cuentas del o e sistema por cada usuario, pero si se quiere aprovechar las cuentas de usuarios puede usarse svnserve a trav´s de un t´nel SSH. e u Basta con usar la ruta de la forma: svn+ssh://servidor/repositorio Como en la forja se utiliza el m´todo del archivo de usuarios por cada repo- e sitorio, si quiere m´s informaci´n sobre esta posibilidad, consulte [4] a o 8.2. Apache httpd Un repositorio puede hacerse accesible a trav´s del servidor Apache y un e m´dulo, usando el protocolo WebDAV[3], una extensi´n del protocolo HTTP. o o Para obtener informaci´n sobre c´mo configurar un servidor Apache, puede o o consultar [1] Debe tener instalado el servidor Apache httpd 2.0, el m´dulo mod dav (que o viene con el servidor) y mod dav svn. Una vez est´ todo instalado, aseg´rese de que ambos m´dulos sean cargados e u o al iniciar Apache. Puede hacerse en versiones antiguas a˜adiendo en httpd.conf n 13
  • 14. LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so O, en versiones m´s reciente, a trav´s de /etc/apache2/mods-enabled, crean- a e do en su interior enlaces simb´licos a los m´dulos dav.load y a dav svn.load o o situados en /etc/apache2/mods-available. Una vez hecho esto es necesario hacer accesible el repositorio, lo que se pue- de hacer de dos formas, o haciendo accesible unicamente el repositorio de un ´ proyecto o el directorio que contiene los repositorios de varios proyectos. Esta segunda forma es la util en el caso de la forja. Para que Apache sepa qu´ di- ´ e rectorio debe hacer accesible, escriba en el archivo httpd.conf o apache2.conf (dependiendo de la versi´n): o <Location /svn> DAV svn SVNParentPath /usr/local/repositorio </Location> 8.2.1. Autenticaci´n o Autenticaci´n HTTP b´sica Usando la utilidad htpasswd que proporcio- o a na Apache. Lo primero es a˜adir los usuarios y sus contrase˜as: n n # Se pasa el par´metro -c para crear el archivo. a # -m es para cifrar la contrase~a usando MD5 n $ htpasswd -cm /etc/svn-auth juan New password: **** Re-type new password: **** Adding password for user juan $ htpasswd -m /etc/svn-auth ana New password: *** Re-type new password: *** Adding password for user ana Una vez hecho esto, es necesario especificar en el fichero de configuraci´n o que se quiere emplear este fichero para la autenticaci´n: o <Location /svn> DAV svn SVNParentPath /usr/local/repositorio AuthType basic AuthName quot;Subversionquot; AuthUserFile /etc/svn-auth Require valid-user # Todas las conexiones deben ser identificadas </Location> 14
  • 15. Certificado SSL Tambi´n pueden usarse conexiones seguras (https), pero e c´mo generar certificados y configurar Apache para que los use se escapa de los o objetivos de esta gu´ Puede consultar el manual de Apache si le interesa el ıa. tema. 8.2.2. Opciones de acceso Con las opciones anteriores cualquier usuario autenticado puede escribir y leer del repositorio, mientras que los no autenticados no pueden leerlo. Si se quiere permitir a los usuarios an´nimos leer y a los registrados leer y o escribir: <Location /svn> DAV svn SVNParentPath /usr/local/repositorio AuthType basic AuthName quot;Subversionquot; AuthUserFile /etc/svn-auth <LimitExcept GET PROPFIND OPTIONS REPORT> # Hace falta identificarse salvo para las operaciones de lectura Require valid-user </LimitExcept> </Location> Empleando el m´dulo mod authz svn puede limitarse el acceso por direc- o torios. Para m´s informaci´n al respecto, consulte [4], ya que est´ m´s all´ de a o a a a esta gu´ r´pida. ıa a Referencias [1] Apache httpd. http://httpd.apache.org/. [2] Detailed description of unified format. http://www.gnu.org/software/ diffutils/manual/html node/Detailed-Unified.html. [3] Webdav. http://www.webdav.org. [4] C.Michael Pilato Ben Collins-Sussman, Brian W. Fitzpatrick. Version Con- trol with Subversion. TBA, 2004. 15