Sergio Álvarez (xergio)

Escrito 405

SVN + lista de usuarios y acceso + ViewVC

Una vez más me he montado el servidor SVN. Realmente no sé si le sacaré partido, pero ahí lo tendré para lo que sea.

Siempre que he hecho esto he tenido los mismos problemas: primero que SVN no va, luego la lista de accesos falla y por último ViewVC da error de Python. Por eso voy a dejar escrito cómo lo he hecho funcionar esta vez, para que no me vuelva a pasar.

Lo voy a explicar como si fuera para Gentoo, pero en otros sistemas es prácticamente igual. Solo cambiarán 4 comandos.

Instalar SVN

En gentoo se instala con un simple emerge subversion. Hay que fujarse en que lo haga con soporte para Python y Apache. Una vez instalado creo un primer repositorio con svnadmin create /home/svn/repositorios/proyecto.

Ahora configuro Apache. Primero le diré a Apache2 que cargue los módulos de WebDAV, SVN y Authz añadiendo a la variable APACHE2_OPTS del archivo /etc/conf.d/apache2 las opciones -D DAV -D SVN -D SVN_AUTHZ, además de las que ya había: -D PHP5 -D PYTHON. Recargo Apache con /etc/init.d/apache2 reload y ya está.

Ahora el vhost y la autentificación. En mi caso siempre he querido un vhost para esto y lo creo así:

<Directory "/home/svn/">
  Options FollowSymLinks Indexes ExecCGI
  AllowOverride All
  <IfModule mod_access.c>
    Order deny,allow
    Deny from none
    Allow from all
  </IfModule>
</Directory>

<VirtualHost *:80>
  ServerName svn.xergio.net
  ServerAlias www.svn.xergio.net svn.xrg.es www.svn.xrg.es
  DocumentRoot /home/svn/www
  ErrorLog logs/svn.xergio.net-error_log
  CustomLog logs/svn.xergio.net-access_log combined

#  ScriptAlias /source /home/svn/www/bin/cgi/viewvc.cgi
#  ScriptAlias /query /home/svn/www/bin/cgi/query.cgi

  <Location "/svn/proyecto">
    DAV svn
    SVNPath /home/svn/repositorios/proyecto
#    AuthType Basic
#    AuthName "Repositorio SVN"
#    AuthUserFile /home/svn/config/users.proyecto
#    AuthzSVNAccessFile /home/svn/config/access
#    Require valid-user
  </Location>
</VirtualHost>

Las líneas comentadas significan que eso ahora no nos sirve, ahora las iremos descomentando.

Bien, como podemos ver tengo una ruta base, /home/svn/ donde dentro de repositorios/ meto cada proyecto (en este caso uno llamado "proyecto"), en config/ meto el archivo de accesos que ya veremos y los usuarios para cada proyecto, y un directorio www/ que será para meter dentro el ViewVC.

Hay que destacar que para cada proyecto se tendrá que crear un bloque Location. Esto me gustaría cambiarlo en un futuro...

Si pedimos http://svn.eldominio.com/svn/proyecto podremos obtener el proyecto llamado "proyecto".

Lista de usuarios y de accesos

Ahora voy a aligerar un poco la marcha.

Descomento las 5 últimas líneas comentadas. Así ahora tengo la autentificación básica activada. Creo el archivo /home/svn/config/users.proyecto con el comando htpasswd2 -m -c /home/svn/config/users.proyecto USUARIO. El resto de veces no se pondrá la -c, sino nos cargamos el archivo.

Ahora la lista de accesos será así:

[proyecto:/]
xergio = rw
test = r

Esto significa que para todo el proyecto llamado "proyecto", los usuarios xergio y test podrán leer (descargarse el proyecto), el usuario xergio podrá también escribir (hacer commits), y el resto nada de nada.

Habría un bloque similar para cada proyecto, y además podríamos poner permisos a directorios dentro de cada proyecto.

Recargamos de nuevo Apache2 y ya estará todo listo.

ViewVC

Nos lo descargamos, lo descomprimimos en /home/svn/www/ y ejecuto el comando ./viewvc-install. Me pedirá dónde lo quiero instalar, le digo que ahí mismo, y configuro el viewvc.conf así:

[general]
#cvs_roots = cvs: /home/cvsroot
#svn_roots = 
root_parents = /home/svn/repositorios : svn
#default_root = 
#rcs_path = /usr/bin/
#cvsnt_exe_path =
#cvsnt_exe_path = cvs
#cvsnt_exe_path = K:Program Filescvsntcvs.exe
#cvsnt_exe_path = /usr/bin/cvs
use_rcsparse = 0
#svn_path = /usr/bin/
#mime_types_file = /usr/local/apache/conf/mime.types
address = Lo que sea, admite HTML
forbidden =
kv_files =
languages = en-us

[options]
root_as_url_component = 1
default_file_view = log
checkout_magic = 0
http_expiration_time = 600
generate_etags = 1
sort_by = file
sort_group_dirs = 1
hide_attic = 1
log_sort = date
diff_format = h
hide_cvsroot = 1
hr_breakable = 1
hr_funout = 0
hr_ignore_white = 1
hr_ignore_keyword_subst = 1
hr_intraline = 0
allow_annotate = 1
allow_markup = 1
allow_compress = 1
template_dir = templates
#docroot = /docroot
show_subdir_lastmod = 0
show_logs = 1
show_log_in_markup = 1
cross_copies = 1
#use_localtime = 1
py2html_path = .
short_log_len = 80
use_enscript = 1
enscript_path =
use_highlight = 0
use_php = 0
allow_tar = 1
use_cvsgraph = 0
use_re_search = 1
use_pagesize = 0
limit_changes = 100

Hay más cosas. pero no las he tocado.

Por cierto, descomentamos del vhost de Apache las dos líneas que quedaban. Viendo la dirección, accediendo a http://svn.eldominio.com/source/ veremos ya nuestro ViewVC.

Ale, fijo que se me olvidaron cosas, ya las añadiré si me doy cuenta.

3 comentarios

 Jabber status xergio comentó:

[Avatar]
  • #1
  • 13-1/17:22
Ah si, en /home/svn/www se puede crear un index.php con la siguiente línea: <?php header("Location: /source/"); ?>, así si vamos a http://svn.eldominio.com/ a secas nos mandará a /source, que es donde está viewvc :)

 Jabber status nils comentó:

[Avatar]
  • #2
  • 13-1/22:35
¿Y para qué sirve? (me da pereza buscarlo en google :P)

 Jabber status xergio comentó:

[Avatar]
  • #3
  • 13-1/23:38
SVN es la evolución de CVS, un control de versiones. En principio tengo pensado ir colgando el código de este blog y otros proyectos.

Deja un comentario

Pulsa en los títulos para ver información sobre cómo comentar.

Autocompletado de nicks

Todos los campos del formulario son opcionales menos el del PIN.

Usa el tabulador para autocompletar los nicks de otros comentaristas.

Si escribes @ y pulsas la tecla tabulador varias veces podrás recorrer la lista de nicks usados

Y si escribes # (almoadilla) y número (Ej.: #5) se substituirá directamente el nick del comentario correspondienmte al pulsar el tabulador.

Tags HTML permitidos

Tags: a, strong, b, em, u, code, cite.

El tag a admite la propiedad href="..." para indicar la dirección.

Los tags también tienen autocompletado (al igual que los nicks). Para usarlos se pone por ejemplo strong + TABULADOR.

Formulario para comentar

Cargando...

Todo el contenido bajo el dominio XERGIO.NET está sujeto a la licencia Creative Commons con las condiciones BY-SA. Web estandarizada en XHTML 1.0, CSS 2, RSS 2 y Atom 1.0.