Montar un servidor subversion en Windows

De ChuWiki
Saltar a: navegación, buscar

Montar un servidor de subversion en windows es fácil y rápido usando cualquiera de los instalables ya preparados que vienen. Entre ellos:

  • http://www.collab.net/downloads/subversion/ Descargando el instalador y ejecutándolo, nos monta un servidor apache con acceso al repositorio de subversion y un servidor de subversion, además de los comandos de cliente de subversion. Con esta instalación, podemos acceder a subversion a través de http://unhost/svn o bien svn://unhost/ . Necesitamos registrarnos en la página para poder descargarlo.
  • http://www.visualsvn.com/server/ Este es posiblemente el más sencillo de todos, puesto que aparte de instalar un servidor https de subversion, nos da una interface gráfica para el control de los repositorios y creación de usuarios. No es necesario tener ningún conocimiento de los ficheros de configuración de subversion, puesto que se hace a través de la interface gráfica.
  • http://bitnami.org/stack/subversion Otro instalable windows que lo hace todo solo.


Servidor subversion como servicio de windows

Si el instalable no nos monta subversion como servicio de windows, podemos hacerlo de la siguiente manera. El ejecutable de servidor de subversion es svnserve.exe. Para crear un servicio con él debemos ejecutar el comando sc que viene con Windows de la siguiente manera, con permisos de administrador

sc create svnserve binpath= "c:\svnserve\svnserve.exe --service 
    --root c:\repos" displayname= "Subversion" depend= tcpip 
    start= auto

donde svnserve es el nombre que queremos dar al servicio, binpath contiene el comando a ajecutar (svnserve.exe con sus opciones) y dentro de él --root apunta al directorio donde están nuestros repositorios de subversion). displayname es el nombre que queremos que se vea para el servicio, depend es una dependencia del servicio, que depende de tcpip. Y start=auto indica que se arranque automáticamente al encender el ordenador.


Crear repositorios

En el directorio donde hemos indicado que estarán nuestros repositorios, podemos crear repositorios para nuestros proyectos. Para ello, vamos al directorio c:\repos y ejecutamos el comando

c:\> cd c:\repos
c:\repos> svnadmin create PROYECTO1

Esto creará un repositorio PROYECTO1


Usuarios en subversion

Hay muchas formas de crear usuarios para subversion, incluyendo el que coja los de Windows. Sin embargo, una forma fácil de hacerlo es la siguiente.

Vamos al repositorio de PROYECTO1 recién creado y editamos el fichero conf/svnserve.conf. Por defecto viene con un montón de comentarios, pero en los que podemos leer claramente todas las opciones. Podemos dejar algo como esto

anon-access = read
auth-access = write
password-db = passwd
realm = PROYECTO1

Donde

  • anon-access = read indica permisos de lectura para usuario anónimos. Es decir, cualquiera podría sacar los fuentes para verlos, pero no podría subir los cambios.
  • auth-access = write indica permisos de lectura y escritura para usuarios autentificados.
  • password-db = passwd es el fichero donde estarán los nombres de usuario y passwords. En este caso, el fichero se llamará passwd y el path es relativo al fichero svnserve.conf que estamos editando.
  • realm = PROYECTO1 es el nombre que verán los usuarios cuando intenten acceder al repositorio y se les pida usuario y password. Puede ser cualquier palabra o frase que queramos. También se usará como clave para cifrado si corresponde.

Podemos dejar annon-acces = none para no dar ningún permiso a usuario anónimos.

Luego, editamos el fichero passwd que se crea por defecto (o el que hayamos indicado en password-db = passwd), lo editamos y ponemos los usuarios que queramos, de esta manera

[users]
chuidiang = la-password
federico = otra-password
juana = mas-passwords

Grupos en subversion

Si en el fichero svnserve.conf ponemos también una línea así

authz-db = authz

estamos indicando un fichero en el que podemos meter a los usuarios en grupos y en los que podemos dar permisos a cada grupo o usuarios a determinados directorios. Por ejemplo, suele ser una forma habitual de trabajo tener en el repositorio tres directorios: trunk, branches y tags.

  • trunk es la rama principal de desarrollo. Una forma de trabajo es que haya una persona responsable de esta rama y que garantice que es siempre estable. Esa persona puede ser la única con permisos de escritura en ella y recibir los cambios de los demás desarrolladores. Sólo el puede escribir, aunque todos los demás podrían leer.
  • branches y tags son para ramas secundarias y etiquetas. En la forma de trabajo anterior, los desarrolladores deben crearse su propia rama a partir de la principal y desarrollar en la rama. Cuando terminan, avisan al responsable de la rama principal para que prueba y lleve a ella los cambios realizados. Se puede dar permisos de escritura a este directorio branches a todos los desarrolladores.

El fichero authz puede contener cosas como esta

[groups]
administradores = chuidiang
desarrolladores = federico,juana

[/trunk]
@administradores = rw
@desarrolladores = r
* = 

[/branches]
@administradores = rw
@desarrolladores = rw
* =

donde:

  • En [groups] se definen los grupos, poniendo nombre de grupo igual a los desarrolladores separados por comas.
  • Se ponen tantas secciones [/path] como se quiera y en ellas se pone
    • @nombre_grupo = permisos. Pueden ser rw, r o nada si no se quieren dar permisos
    • nombre_usuario = permisos.
    • * = permisos para el resto.

Enlaces externos