Montar un control de versiones SVN (subversion) para nuestro codigo en 1and1

Objetivo: montar una web donde podamos controlar las versiones de nuestro código de aplicaciones Android (aunque es aplicable a cualquier proyecto: PHP, .NET…). Nuestro SVN (Subversion) lo montaremos en 1and1, dada su facilidad. Tras montarlo, damos ejemplos de uso, y aplicamos nivel de seguridad HTACCESS para el acceso por HTTP.

MONTAR EL DIRECTORIO SVN EN 1AND1:

– Descargar servidor SVN para controlar versiones por navegador:

    http://websvn.tigris.org/servlets/ProjectDocumentList

– Descargamos el fichero (websvn-2.3.3.zip en mi caso), lo subimos a 1and1 y lo descomprimimos, por ejemplo, en la carpeta websvn/

– Creamos en 1and1 un subdominio (o dominio) que apunte a dicho directorio y accedemos a él por navegador. Por ejemplo: svn.prueba.com.

– Veremos un mensaje de error, ya que se necesita un fichero de configuración. Para dicho fichero, hacemos copia del fichero /includes/distconfig.php y lo llamamos config.php

– Toca configurar el fichero:

  • Descomentamos y modificamos (o simplemente agregamos esta linea al principio): $config->setSvnConfigDir(‘tmp’);
  • Descomentamos y modificamos (o simplemente agregamos esta linea al principio): $config->addRepository(‘Titulo de una carpeta de mi respositorio’, ‘file:///kunden/homepages/3/g147851711/htdocs/websvn/proyectos_svn’);

– En consola (SSH):

  • Como vemos, se ha tenido que poner la ruta completa del directorio (ver con pwd). También hace falta crear el directorio tmp/ dentro de la carpeta websvn/: mkdir /kunden/homepages/3/g347851712/htdocs/websvn/tmp
  • Creamos el directorio-repositorio con la propiedad de svnadmin:  svnadmin create /kunden/homepages/3/g147851711/htdocs/websvn/proyectos_svn

– Listo, ya pdemos usar en nuestro navegador la url http://svn.prueba.com el listado de directorios que tenemos bajo control de versiones. Mirando bien el fichero config, se pueden añadir directorios separados, proyectos,y muchas más cosas…

HACER CHECKOUT:

– Con un checkout del proyecto en local (con la ayuda de Netbeans por ejemplo), podremos descargarlo y trabajar sobre él, haciendo los commits al ir finalizando tareas.
– Un checkout del proyecto en producción (se suele tener que hacer bajo línea de comandos), si no lo teníamos todavía subido (si es al contrario habría que hacer el add), nos hará tener bajo control de versiones el proyecto que todo el mundo podrá visitar vía web.

HACER COMMIT, UPDATE… :

– Ahora vamos a ver como, por ejemplo, desde NetBeans, metemos un proyecto en control de versiones:

  • Teniendo un proyecto ya en NetBeans, vamos a meterlo en SVN: botón derecho en el proyecto -> Versioning -> Import into Subversion Repository
  • En los parámetros, debemos meter:

Repository URL: svn+ssh://prueba.com/kunden/homepages/3/g147851711/htdocs/websvn/proyectos_svn

     Username: <user>

     Password: <pass>

Nota: ver como no se pone svn.prueba.com, sino solamente prueba.com (el nombre del host).  El <user> y <pass> son los mismos que el usuario de SSH de 1and1

Y listo, seguir el Wizard y lo tendremos en control de versiones 😉

PROTEGER NUESTRA URL DE SVN EN 1AND1:

– Imaginaos que queremos proteger, al menos con usuario/password de htaccess la url svn.prueba.com. Iríamos al directorio websvn/ y hacemos:

  • Creamos usuario de htpasswd: htpasswd -c .htpasswd manolitogafotas
  • Con eso se ha creado el fichero .htpasswd, con el par usuario:md5(password). Vamos a crear otro, para ver que los siguientes es distinto: htpasswd .htpasswd jaimito
  • Ahora creamos el fichero .htaccess, que apuntando al .htpasswd, nos protegera el directorio: vim .htaccess

AuthType Basic
AuthName “Acceso al SVN de Prueba”
AuthUserFile /kunden/homepages/3/g147851711/htdocs/websvn/.htpasswd
Require valid-user
AddHandler x-mapp-php5 .php3 .php4 .php .phtml

  • Salimos y grabamos. Ya tenemos protección.