Quijost

Por favor ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Búsqueda Avanzada  

Noticias:

Quijost.com - Hosting Gratis al alcance de tus manos

Autor Tema: Como crear un repositorio SVN y gestión básica  (Leído 62154 veces)

0 Usuarios y 1 Visitante están viendo este tema.

shakaran

  • Soporte
  • Administrator
  • Usuario profesional
  • *****
  • Karma: +12/-0
  • Desconectado Desconectado
  • Sexo: Masculino
  • Mensajes: 487
  • Un buen soporte lo es todo
    • Ver Perfil
    • Shakaran
Como crear un repositorio SVN y gestión básica
« en: Noviembre 22, 2010, 21:26:19 pm »

Requisitos
- Acceso SSH (a partir del plan ebasic en Quijost)

Información adicional
- La versión SVN de Quijost es 1.4.2 1.6.11 (por defecto con CentOS 5.5 5.8 )

Crear un repositorio Subversion es un tarea increíblemente simple. La utilidad svnadmin que facilita Subversion provee un subcomando "create" para hacer justamente esto:

Código: [Seleccionar]
$ svnadmin create /home/tu_usuario/public_html/ruta_repositorio
Siendo "tu_usuario" el usuario de quijost de cuenta de alojamiento y "ruta_repositorio" el nombre del repositorio que quieras utilizar.

Con ello crearas un repositorio SVN con el almacenamiento de sistema de ficheros de datos por defecto.

Antes de Subversion 1.2, por defecto era "Berkeley DB", posteriores son "FSFS". Puedes elegir explícitamente
el sistema de ficheros con el argumento "--fs-type", que acepta como parámetro "fsfs" o "bdb".

FSFS:
Código: [Seleccionar]
$ svnadmin create --fs-type fsfs /home/tu_usuario/public_html/ruta_repositorio
BDB:
Código: [Seleccionar]
$ svnadmin create --fs-type bdb /home/tu_usuario/public_html/ruta_repositorio
Gestión básica de un repositorio SVN

1 - Realizar cambios en el repositorio

En un repositorio es posible modificar, añadir o eliminar cualquier archivo. Para añadir un archivo:

Código: [Seleccionar]
svn add archivo
O podemos eliminar un archivo:

Código: [Seleccionar]
svn delete archivo
2 - Actualizar el repositorio

Cuando queramos confirmar los cambios y que se apliquen en el repositorio, ejecutaremos:

Código: [Seleccionar]
svn commit -m "Mensaje de actualizacion"
3 - Acceder al repositorio

Por último, puedes ver el contenido del repositorio:

Código: [Seleccionar]
svn list http://www.tudominio.com/mirepo
También puedes verlo vía web accediendo a:

http://www.tudominio.com/mirepo

Más información en el manual completo: http://svnbook.red-bean.com/
« última modificación: Septiembre 08, 2012, 04:31:24 am por shakaran »
En línea
Ángel Guzmán Maeso
Quijost Founder - Backend Engineer & Main support

Escain

  • Usuario nuevo
  • *
  • Karma: +3/-0
  • Desconectado Desconectado
  • Sexo: Masculino
  • Mensajes: 2
    • Ver Perfil
    • Escain project
Re:Como crear un repositorio SVN y gestión básica
« Respuesta #1 en: Marzo 02, 2011, 20:58:35 pm »

Introducción
Con el fin de mejorar este tutorial, aportaré como he configurado el subversion para que responda a través de internet, funcione correctamente con el http://tortoisesvn.net/ y habilitar contraseñas según los proyectos.


Queremos no solo que el subversión funcione, sino que pueda haber varios proyectos en nuestro repertorio y cada uno tenga unos permisos de acceso distintos, de forma que algunos usuarios puedan acceder a ciertos proyectos y otros no.
También deseamos que la comunicación con el servidor sea seguro, mediante https.

Instalación en el servidor con Centos 5
El primer paso es instalar el svn:
Código: [Seleccionar]
yum -y install mod_dav_svn mod_ssl subversion
Crear los distintos repertorios para el subversion:
  • /usr/subversion/svn/ Para guardar los distintos proyectos.
  • /usr/subversion/access/ Para los archivos de permisos, contraseñas y certificados
Código: [Seleccionar]
mkdir /usr/subversion
mkdir /usr/subversion/svn
mkdir /usr/subversion/access

Modificar el propietario/grupo:
Código: [Seleccionar]
chown -R apache /usr/subversion
chgrp -R apache /usr/subversion

Crear un proyecto de prueba:
Código: [Seleccionar]
svnadmin create /usr/subversion/svn/prueba
Crear un fichero de usuarios:
Creamos un fichero de usuario, es un fichero estándar que contiene sencillamente una lista de nombres de usuarios y sus respectivas contraseñas codificadas, del que apache verificará si el usuario tiene los permisos adecuados.
     Nota: los valores entre < y > son a tu elección.
El archivo de usuarios (que vamos a llamar users por ejemplo) lo colocaremos en la carpeta access.
Código: [Seleccionar]
htpasswd -c /usr/subversion/access/users <usuario1>
    <pass>
    <pass>
htpasswd /usr/subversion/access/users <usuario2>
    <pass>
    <pass>
htpasswd /usr/subversion/access/users <usuario3>
    <pass>
    <pass>
...

Configurar el acceso de cada usuario:
Ahora configuraremos un archivo que asigna qué usuarios pueden acceder a qué proyecto. En nuestro caso solo tenemos uno, pero podría haber muchos.
Creamos un archivo (ACL por ejemplo) en nuestra carpeta access:
Código: [Seleccionar]
nano /usr/subversion/access/ACLY escribimos lo siguiente:
Código: [Seleccionar]
[prueba:/]
@pruebaTeam=rw

[groups]
pruebaTeam=usuario1, usuario2

Una pequeña explicación:
Para cada proyecto, escribimos:
Código: [Seleccionar]
[<repoName>:<repoPath>]
<usuario>=<permisos>
<usuario>=<permisos>
...
Nota: los permisos empiezan por ser nulos para todos y se asignan, por lo que si en una linea das por ejemplo "rw" y a la siguiente asignas solo "r", el usuario tendrá "rw"
Los permisos son "r" = lectura, "w"=escritura.

Se pueden crear grupos de usuarios mediante:
Código: [Seleccionar]
[groups]
<nombreGrupo>=<usuario>, <usuario>, ...

Configurar Apache:
Debemos elegir nuestro dominio/directorio que corresponderá al subversion, por ejemplo, en nuestro caso usaremos http://<dominio>/svn/<proyecto>
Accedemos al archivo de configuración del subversion para apache:
Código: [Seleccionar]
nano /etc/httpd/conf.d/subversion.conf
  • Quitamos las lineas de LimitExcept Para que nos pida contraseña también para descargar y no solo para el commit.
  • Añadimos AuthzSVNAccessFile /usr/subversion/access/ACL dentro del Location
  • Modificamos la linea SVNParentPath a /usr/subversion/svn
  • Modificamos la linea <Location.. por <Location /svn>
  • Modificamos la linea AuthUserFile a /usr/subversion/access/users
El archivo final queda aproximadamente como:
Código: [Seleccionar]
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

#diversos comentarios

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

Listen 447

#Elegimos nuestro puerto, por ejemplo 447 para el svn ssl
<VirtualHost miHost:447>
#la raiz no puede ser subversion, para evitar acceso a /access
#style es una buena opción, allí guardaremos la hoja .xsl
DocumentRoot "/usr/subversion/styles"
#nuestro servidor
ServerName miHost
#activar SSL
  SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
#las carpetas de los certificados, aun no creadas
SSLCertificateFile /usr/subversion/access/ssl.crt
SSLCertificateKeyFile /usr/subversion/access/ssl.pem
#la carpeta de subversion, en nuestro caso /svn
<Location /svn>
DAV svn
SVNParentPath /usr/subversion/svn
AuthzSVNAccessFile /usr/subversion/access/ACL
Satisfy all
Require valid-user
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /usr/subversion/access/users
</Location>
</VirtualHost>

No olvides de sustituir miHost por tu host real, por ejemplo: quijost.com

Claves SSL:
El siguiente paso es insertar los certificados si los tenemos: ssl.pem para la clave privada y ssl.crt para el certificado.
En nuestro caso, como no tenemos dinero de sobra, crearemos un certificado auto-firmado:

Código: [Seleccionar]
cd /sur/subversion/access
openssl genrsa -des3 -rand file1:file1 -out ssl.key 1024
openssl rsa -in ssl.key -out ssl.pem
openssl req -new -key ssl.pem -out ssl.csr
openssl x509 -req -days 365 -in ssl.csr -signkey ssl.pem -out ssl.crt
Hay que responder a algunas preguntas, pero tampoco requieren de mucha explicación: claves, nombres, etc.
El .csr es el archivo que hay que pasar a las entidades para que nos proporcionen un certificado real.
También hay que tener en cuenta que el nombre del host no puede ser una IP si queremos un certificado real, y debe ser obligatoriamente el nombre de nuestro servidor web, por ejemplo quijost.com

Iniciamos el servicio:
service httpd start

Otras operaciones interesantes:
Puede hacer un backup de todo el svn con:
Código: [Seleccionar]
svnadmin dump /usr/subversion/svn/prueba > /usr/subversion/prueba.dmp

Y puede volver a cargar un backup mediante:
Código: [Seleccionar]
svnadmin load /usr/subversion/svn/prueba < /usr/subversion/prueba.dmp

Muy práctico para no tener disgustos o para transferir el servidor svn a otro lado.

Espero que les sea útil ;)



Nuestro Subversion esta listo, una vez instalado el TortoiseSVN en tu sobremesa, creas una carpeta y haces un "SVN Checkout" que viene en el menú al hacer clic derecho sobre la carpeta.
Te  pedirá la clave de alguno de los usuarios que hemos creado y listo.
No te olvides de hacer commit después de trabajar.
Puede acceder a el mediante:
https://mihost:447/svn/prueba

« última modificación: Junio 13, 2011, 00:50:14 am por Escain »
En línea

shakaran

  • Soporte
  • Administrator
  • Usuario profesional
  • *****
  • Karma: +12/-0
  • Desconectado Desconectado
  • Sexo: Masculino
  • Mensajes: 487
  • Un buen soporte lo es todo
    • Ver Perfil
    • Shakaran
Re:Como crear un repositorio SVN y gestión básica
« Respuesta #2 en: Marzo 06, 2011, 09:27:45 am »

¡Bienvenido y muchas gracias por tu aporte Escain!

Como comentario adicional, para estos cambios adicionales es requisito disponer de un VPS ya que se deben acceder a configuraciones de Apache (que en cuentas compartidas no se permite).

También pueden unificarse los comandos:

Código: [Seleccionar]
chown -R apache /usr/subversion
chgrp -R apache /usr/subversion

Por:
Código: [Seleccionar]
chown -R apache.apache /usr/subversion
Esperamos que completes el manual con la parte SSL. Muy buen trabajo.
En línea
Ángel Guzmán Maeso
Quijost Founder - Backend Engineer & Main support
 

Página generada en 0.119 segundos con 34 consultas.