SVN en Linux


Aunque el título parezca un poco simple, el instalar Subversion en CentOS tiene su truquillo si lo que quieres es instalar la última versión de éste.
Uno de los puntos “fuertes” de CentOS y normalmente de cualquier servidor, es que son muy estables, pero esto tiene su punto negativo, y es que para ello nunca usan las últimas versiones del software, sino usan versiones antiguas, pero al mismo tiempo muy probadas y por consiguiente muy estables también. El usar una versión antigua de software no es nada malo, siempre y cuando esa versión todavía tenga soporte y está parcheada con los últimos parches.
Dicho esto, algunas veces podemos querer correr versiones más modernas en nuestro servidor por el motivo que sea. Ya sea porque necesitemos usar alguna funcionalidad que la nueva versión ofrezca, mejor integración con otros sistemas/productos en nuestra red, etc.
En casa tengo un pequeño servidor que corre CentOS y el otro día me decidí a montar mi propio Subversion. Para ello, sólo tenía que hacer:
1yum install mod_dav_svn subversion
Esto te instala Subversion y el modulo para integrarlo con Apache. El “problema” es que la versión que hay en los repositorios oficiales de CentOS es la versión 1.4 y yo quería instalar la versión 1.6, la cual no está en dichos repositorios.
Lo primero es encontrar un repositorio fiable dónde tengan dicha versión. Nota, siempre puedes bajar el código fuente y compilar, pero eso requiera más trabajo y luego mantenerlo de forma manual.
Unos de los repositorios más conocidos es RPMforge. En este enlace os explican como instalar dicho repositorio.
Una vez tengáis instalado dicho repositorio, si intentamos de nuevo instalar o actualizar Subverison, vemos que todavía, lo que nos trae yum es la versión 1.4. Para que yum busque en el nuevo repositorio que acabamos de instalar tienes que hacer los siguiente:
Tenemos que editar /etc/yum.repos.d/CentOS-Base.repo y excluir de las secciones base yupdate. subversion y y mod_dav_svn. Esto lo hacemos con la etiqueta exclude. Poniendo la siguiente línea en ambas secciones:
1exclude=subversion,mod_dav_svn
Luego debemos de hacer un update del sistema:
1yum update
Si ya tenías subversion previamente instalado, te debería de decir que hay una actualización. Si no lo tenías instalado, entonces instálalo:
1yum install mod_dav_svn subversion
Una vez hecho esto, vamos a crear un repositorio y activar el modulo de Apache (Asumos que ya tienes Apache instalado, sino este es un buen momento para hacerlo).
Edita el fichero /etc/httpd/conf.d/subversion.conf. Aquí copio el trozo de código de mi fichero de configuración:
1<location repos="">
2DAV svn
3SVNPath /var/www/svn/repos
4AuthType Basic
5AuthName "Subversion repos"
6AuthUserFile /etc/svn-auth-conf
7Require valid-user
8</location>
Ojo con el SVNPath. Por defecto el fichero de configuración viene tiene comentada todas esas líneas y algunas más, pero en vez de SVNPath, SVNParentPath. Al principio no me di cuenta y decomenté esa línea y no podía acceder a subversion desde Apache o Eclipse. Así que ¡cuidadín!
Una vez hecho eso:
1service httpd restart
Ahora vamos a crear los usuarios que podrán acceder al SVN:
1htpasswd -cm /etc/svn-auth-conf nombre_usuario


add users



htpasswd -m /etc/svn-auth-conf nombre_usuario
Después de tendrás que introducir la contraseña.
Ahora vamos a crear el repositorio. El path lo puedes cambiar si quieres, pero recuerda cambiar tu fichero de configuración también.
1cd /var/www/
2mkdir svn
3cd svn
4svnadmin create repos
5chown -R apache.apache repos
6service httpd restart


Una vez hecho esto, deberías de poder abrir tu navegador e ir a http://tuservidor/repos y deberías de poder ver el contenido de tu subversion. Te debería preguntar por el nombre de usuario y la contraseña.




Eliminar usuario de SVN: htpasswd -D /etc/svn-auth-conf    nombre_usuario
Listar usuario de SVN: cat /etc/svn-auth-conf



https://wiki.centos.org/HowTos/Subversion

[root@lucifer ~]# yum install mod_dav_svn subversion

[root@lucifer ~] vim /etc/httpd/conf/httpd.conf -- Edit what you need and save the file
[root@lucifer ~] service httpd start
[root@lucifer ~] chkconfig httpd on

[root@lucifer ~] cd /etc/httpd/conf.d/
[root@lucifer ~] vim subversion.conf

# Make sure you uncomment the following if they are commented out
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

# Add the following to allow a basic authentication and point Apache to where the actual
# repository resides.
<Location /desarrollo>
        DAV svn
        SVNPath /var/www/svn/desarrollo
        AuthType Basic
        AuthName "Subversion repos"
        AuthUserFile /etc/svn-auth-conf
        Require valid-user
</Location>

[root@lucifer ~] htpasswd -cm /etc/svn-auth-conf yourusername
New password:
Re-type new password:
Adding password for user yourusername
[root@lucifer ~] htpasswd -m /etc/svn-auth-conf anotherusername
New password:
Re-type new password:
Adding password for user anotherusername

[root@lucifer ~] cd /var/www/ -- Or wherever you placed your path above
[root@lucifer ~] mkdir svn
[root@lucifer ~] cd svn
[root@lucifer ~] svnadmin create desarrollo
[root@lucifer ~] chown -R apache.apache desarrollo
[root@lucifer ~] service httpd restart
[root@lucifer ~] elinks https://tuip/desarrollo
[root@lucifer ~] svn --help
[root@lucifer ~] cambiar el puerto a apache a 28888

.
|-- project1
|   |-- branches
|   |-- tags
|   `-- trunk
`-- project2
    |-- branches
    |-- tags
    `-- trunk

[root@lucifer ~] cd /tmp
[root@lucifer ~] mkdir mytestproj
[root@lucifer ~] cd mytestproj
[root@lucifer ~] mkdir configurations options main
[root@lucifer ~] vim configurations/testconf1.cfg -- Add whatever you want to these files.
[root@lucifer ~] vim options/testopts1.cfg
[root@lucifer ~] vim main/mainfile1.cfg

[root@lucifer ~] svn import /tmp/mytestproj/ file:///var/www/svn/repos/mytestproj -m "Initial repository layout for mytestproj"
Adding         /tmp/mytestproj/main
Adding         /tmp/mytestproj/main/mainfile1.cfg
Adding         /tmp/mytestproj/configurations
Adding         /tmp/mytestproj/configurations/testconf1.cfg
Adding         /tmp/mytestproj/options
Adding         /tmp/mytestproj/options/testopts1.cfg

[me@mylappy ~] cd /tmp
[me@mylappy ~] svn co http://yoursvnserver/repos/mytestproj
Authentication realm: <http://yoursvnserver:80> Subversion repos
Password for 'youruser':
A    mytestproj/main
A    mytestproj/main/mainfile1.cfg
A    mytestproj/configurations
A    mytestproj/configurations/testconf1.cfg
A    mytestproj/options
A    mytestproj/options/testopts1.cfg
Checked out revision 1.

[me@mylappy ~] cd mytestproj
[me@mylappy ~] vim configurations/testconf1.cfg -- Add or delete something and save.
[me@mylappy ~] svn commit -m "Added a line to testconf1.cfg."
Sending        configurations/testconf1.cfg
Transmitting file data .
Committed revision 2.

[me@mylappy ~] svn co http://yoursvnserver/repos/mytestproj
A    mytestproj/main
A    mytestproj/main/mainfile1.cfg
A    mytestproj/configurations
A    mytestproj/configurations/testconf1.cfg
A    mytestproj/options
A    mytestproj/options/testopts1.cfg
Checked out revision 2.

[me@mylappy ~] cd mytestproj
[me@mylappy ~] cp /etc/yum.repos.d/CentOS-Base.repo configurations/
[me@mylappy ~] svn add configurations/CentOS-Base.repo
A         configurations/CentOS-Base.repo

[me@mylappy ~] svn commit -m "Added the CentOS Yum repo file."
Adding         configurations/CentOS-Base.repo
Transmitting file data .
Committed revision 3.

[me@mylappy ~] svn log http://yoursvnserver/repos -- For the entire repository
[me@mylappy ~] svn log http://yoursvnserver/repos/mytestproj -- For the specific project

[me@mylappy ~] svn co -r 1 http://yoursvnserver/repos/mytestproj
AuthzSVNAccessFile /etc/svn-acl-conf
<Location /repos>
        DAV svn
        SVNParentPath /var/www/svn/repos
        AuthzSVNAccessFile /etc/svn-acl-conf
        AuthType Basic
        AuthName "Subversion repos"
        AuthUserFile /etc/svn-auth-conf
        Require valid-user
</Location>
[reponame:repopath]
user = access
[framework:/]
john =  r
joe = rw
[groups]
staff = joe, george

[framework:/]
john =  r
@staff = rw
[/]
* = r





Comentarios

Entradas populares