¡Esta es una revisión vieja del documento!
Mundo real: cómo administrar un servidor subversion para un equipo pequeño
Estas son mis notas tras 4 años de administración de un servidor Subversion (SVN) en Linux, para un equipo pequeño de 4 o 5 personas que acceden desde la oficina, o desde casa, usando clientes Windows, Mac o Linux.
Si lo que te interesa alojar tu servidor SVN en windows, puedes echar un vistazo a VisualSVN Server para Windows (con versión gratuita y de pago).
Las ventajas de alojar subversion en Linux:
Se puede hostear en servidores (o VMs) más pequeños y baratos que si fuera en Windows
Se puede aprovechar scripting Bash/Perl ya existente
Dispondremos fácilmente del protocolo “svn+ssh” para tener transferencias seguras (encriptadas) de forma simple, sin tener que usar Apache con certificados SSL, etc.
El sistema de usuarios es el propio de cuentas de usuario de Linux
Desventajas de alojar subversion en Linux bajo el protocolo “svn+ssh”:
Estamos obligados a usar línea de comandos, no hay un
GUI para administrar el servidor
No tenemos la misma granularización de permisos en los repositorios y directorios. Todos los usuarios pueden acceder a todo y escribir en todas partes, si bien siempre hay alternativas o pequeños “hacks”.
No tenemos “de entrada” un visor
HTML de los repositorios como cuando instalamos una típica instalación SVN con el servidor web Apache, etc. aunque siempre se pueden instalar aparte.
Lo habitual es que pensemos en Subversion como una manera de “poder trabajar en equipo en el mismo proyecto, controlar los cambios en el código”, etc. Un concepto adicional que he aprendido para entender mejor cómo utilizar SVN en el día a día en un equipo es el siguiente: usamos Subversión con el objetivo de propagar fácilmente los cambios realizados en los proyectos al resto del equipo y a los servidores de prueba, de producción, etc. Esta idea ayuda a comprender mejor cómo debemos enviar (commitar) los cambios que realizamos en el código fuente y los cambios en las carpetas o directorios, especialmente en SVN
Cosas que necesitaremos:
Instalación y actualización
Instalar la versión de subversion deseada, en Ubuntu o CentOS
Poder actualizar el servidor SVN para estar al día
Gestión de usuarios
Añadir usuarios (un nuevo empleado, por ejemplo)
Dar de baja usuarios (expiración de usuarios, por ejemplo cuando un empleado deja la empresa)
Si el servidor es solo para SVN, los usuarios *solo* deben poder hacer subversion
Decidir nuestro “esquema de repositorios” (layout), por ejemplo el de “uno o más proyectos en cada repo”, más flexible que el de “un repo = un proyecto”.
Aprender a usar los “externals” de svn
Scripts:
Script para añadir repositorios
Script para añadir proyectos a un repo
Script para crear el esqueleto de un proyecto nuevo (boilerplate/skeleton)
Script para listar repositorios/proyectos
Script para buscar cadenas en ciertos archivos de todos los repositorios
Script para “empaquetar” los repos
Script para hacer copias de seguridad (backup) de los repos, de diversos modos
Extras:
Uso de una rama “trunk” estándar, y como mucho una rama “release” para proyectos que lo requieren
Svnnotify (enviar email con diferencias al equipo en cada commit)
Usuario “deploy” para desplegar (deploy), uso de “phinx” para cambios en Base de datos (migrations)