SVN - Configuración del entorno

Instalación SVN

Subversion es una popular herramienta de control de versiones de código abierto. Es de código abierto y está disponible de forma gratuita a través de Internet. Viene por defecto con la mayoría de las distribuciones GNU / Linux, por lo que es posible que ya esté instalado en su sistema. Para verificar si está instalado o no, use el siguiente comando.

[[email protected] ~]$ svn --version

Si el cliente de Subversion no está instalado, el comando informará el error; de lo contrario, mostrará la versión del software instalado.

[[email protected] ~]$ svn --version
-bash: svn: command not found

Si está utilizando GNU / Linux basado en RPM, utilice yumcomando para la instalación. Después de una instalación exitosa, ejecute elsvn --version mando.

[[email protected] ~]$ su -
Password: 
[[email protected] ~]# yum install subversion

[[email protected] ~]$ svn --version
svn, version 1.6.11 (r934486)
compiled Jun 23 2012, 00:44:03

Y si está utilizando GNU / Linux basado en Debian, utilice apt comando para la instalación.

[[email protected]]$ sudo apt-get update
[sudo] password for jerry:

[[email protected]]$ sudo apt-get install subversion

[[email protected]]$ svn --version
svn, version 1.7.5 (r1336830)
compiled Jun 21 2013, 22:11:49

Configuración de Apache

Hemos visto cómo instalar el cliente Subversion en GNU / Linux. Veamos cómo crear un nuevo repositorio y permitir el acceso a los usuarios.

En el servidor tenemos que instalar Apache httpd módulo y svnadmin herramienta.

[[email protected] ~]$ su -
Password: 
[[email protected] ~]# yum install mod_dav_svn subversion

los mod_dav_svn El paquete permite el acceso a un repositorio mediante HTTP, a través del servidor httpd Apache y subversion el paquete instala la herramienta svnadmin.

La subversión lee su configuración de /etc/httpd/conf.d/subversion.confarchivo. Después de agregar la configuración,subversion.conf archivo tiene el siguiente aspecto:

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

<Location /svn>
   DAV svn
   SVNParentPath /var/www/svn
   AuthType Basic
   AuthName "Authorization Realm"
   AuthUserFile /etc/svn-users
   Require valid-user
</Location>

Creemos usuarios de Subversion y les concedamos acceso al repositorio. El comando htpasswd se usa para crear y actualizar los archivos de texto sin formato que se usan para almacenar nombres de usuario y contraseñas para la autenticación básica de usuarios HTTP. Las opciones '-c' crean un archivo de contraseña , si el archivo de contraseña ya existe, se sobrescribe. Es por eso que use la opción '-c' solo la primera vez. La opción '-m' habilita el cifrado MD5 para contraseñas.

Configuración de usuario

Creemos usuario tom.

[[email protected] ~]# htpasswd -cm /etc/svn-users tom
New password: 
Re-type new password: 
Adding password for user tom

Creemos usuario jerry

[[email protected] ~]# htpasswd -m /etc/svn-users jerry
New password: 
Re-type new password: 
Adding password for user jerry
[[email protected] ~]#

Cree el directorio principal de Subversion para almacenar todo el trabajo (consulte /etc/httpd/conf.d/subversion.conf ).

[[email protected] ~]# mkdir /var/www/svn
[[email protected] ~]# cd /var/www/svn/

Configuración del repositorio

Cree un repositorio de proyectos llamado project_repo . El comando svnadmin creará un nuevo repositorio y algunos otros directorios dentro de él para almacenar los metadatos.

[[email protected] svn]# svnadmin create project_repo

[[email protected] svn]# ls -l project_repo
total 24
drwxr-xr-x. 2 root root 4096 Aug  4 22:30 conf
drwxr-sr-x. 6 root root 4096 Aug  4 22:30 db
-r--r--r--. 1 root root    2 Aug  4 22:30 format
drwxr-xr-x. 2 root root 4096 Aug  4 22:30 hooks
drwxr-xr-x. 2 root root 4096 Aug  4 22:30 locks
-rw-r--r--. 1 root root  229 Aug  4 22:30 README.txt

Cambiemos la propiedad del usuario y del grupo del repositorio.

[[email protected] svn]# chown -R apache.apache project_repo/

Verifique si SELinux está habilitado o no usando la herramienta de estado de SELinux.

[[email protected] svn]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

Para nuestro servidor, SELinux está habilitado, por lo que tenemos que cambiar el contexto de seguridad de SELinux.

[[email protected] svn]# chcon -R -t httpd_sys_content_t /var/www/svn/project_repo/

Para permitir confirmaciones a través de HTTP, ejecute el siguiente comando.

[[email protected] svn]# chcon -R -t httpd_sys_rw_content_t /var/www/svn/project_repo/

Reinicie el servidor Apache y terminamos con la configuración del servidor Apache.

[[email protected] svn]# service httpd restart
Stopping httpd:                                            [FAILED]
Starting httpd: httpd: apr_sockaddr_info_get() failed for CentOS
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                           [  OK  ]
[[email protected] svn]# service httpd status
httpd (pid  1372) is running...
[[email protected] svn]#

Hemos configurado el servidor Apache correctamente, ahora configuraremos el repositorio. Proporcionar acceso al repositorio solo a usuarios auténticos y utilizar el archivo de autorización predeterminado; agregue las siguientes líneas al archivo project_repo / conf / svnserve.conf .

anon-access = none
authz-db = authz

Convencionalmente, cada proyecto de Subversion tiene trunk, tags, y branches directorios directamente debajo del directorio raíz del proyecto.

El tronco es un directorio donde ocurre todo el desarrollo principal y, por lo general, los desarrolladores lo revisan para trabajar en el proyecto.

El directorio de etiquetas se utiliza para almacenar instantáneas con nombre del proyecto. Al crear una versión de producción, el equipo etiquetará el código que se incluye en la versión.

El directorio de sucursales se utiliza cuando desea seguir diferentes líneas de desarrollo.

Creemos la estructura del directorio de troncales, etiquetas y ramas en el repositorio del proyecto.

[[email protected] svn]# mkdir /tmp/svn-template
[[email protected] svn]# mkdir /tmp/svn-template/trunk
[[email protected] svn]# mkdir /tmp/svn-template/branches
[[email protected] svn]# mkdir /tmp/svn-template/tags

Ahora importe los directorios desde /tmp/svn-template al repositorio.

[[email protected] svn]# svn import -m 'Create trunk, branches, tags directory structure' /tmp/svn-template/ 
Adding         /tmp/svn-template/trunk
Adding         /tmp/svn-template/branches
Adding         /tmp/svn-template/tags
Committed revision 1.
[[email protected] svn]#

¡Esto esta hecho! Hemos creado correctamente el repositorio y hemos permitido el acceso aTom y Jerry. A partir de ahora, pueden realizar todas las operaciones admitidas en el repositorio.