SVN - Configuration de l'environnement

Installation SVN

Subversion est un outil de contrôle de version open-source populaire. Il est open-source et disponible gratuitement sur Internet. Il est livré par défaut avec la plupart des distributions GNU / Linux, il est donc peut-être déjà installé sur votre système. Pour vérifier s'il est installé ou non, utilisez la commande suivante.

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

Si le client Subversion n'est pas installé, la commande signalera une erreur, sinon elle affichera la version du logiciel installé.

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

Si vous utilisez GNU / Linux basé sur RPM, utilisez yumcommande pour l'installation. Une fois l'installation réussie, exécutez lesvn --version commander.

[[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

Et si vous utilisez GNU / Linux basé sur Debian, utilisez apt commande pour l'installation.

[[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

Configuration d'Apache

Nous avons vu comment installer le client Subversion sur GNU / Linux. Voyons comment créer un nouveau référentiel et permettre l'accès aux utilisateurs.

Sur le serveur, nous devons installer Apache httpd module et svnadmin outil.

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

le mod_dav_svn package permet d'accéder à un référentiel via HTTP, via le serveur Apache httpd et subversion package installe l'outil svnadmin.

La subversion lit sa configuration depuis /etc/httpd/conf.d/subversion.conffichier. Après avoir ajouté la configuration,subversion.conf le fichier ressemble à ceci:

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>

Créons des utilisateurs Subversion et accordons-leur l'accès au référentiel. La commande htpasswd est utilisée pour créer et mettre à jour les fichiers de texte brut qui sont utilisés pour stocker les noms d'utilisateur et les mots de passe pour l'authentification de base des utilisateurs HTTP. Les options '-c' créent un fichier de mots de passe , si le fichier de mots de passe existe déjà, il est écrasé. C'est pourquoi n'utilisez l'option '-c' que la première fois. L'option '-m' active le cryptage MD5 pour les mots de passe.

Configuration utilisateur

Laissez-nous créer un utilisateur tom.

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

Laissez-nous créer un utilisateur jerry

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

Créez un répertoire parent Subversion pour stocker tout le travail (voir /etc/httpd/conf.d/subversion.conf ).

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

Configuration du référentiel

Créez un référentiel de projet nommé project_repo . La commande svnadmin créera un nouveau référentiel et quelques autres répertoires à l'intérieur pour stocker les métadonnées.

[[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

Modifions la propriété de l'utilisateur et du groupe du référentiel.

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

Vérifiez si SELinux est activé ou non à l'aide de l'outil d'état 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

Pour notre serveur, SELinux est activé, nous devons donc changer le contexte de sécurité SELinux.

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

Pour autoriser les validations via HTTP, exécutez la commande suivante.

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

Redémarrez le serveur Apache et nous en avons terminé avec la configuration du serveur 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]#

Nous avons configuré le serveur Apache avec succès, nous allons maintenant configurer le référentiel. Fournir un accès au référentiel uniquement aux utilisateurs authentiques et utiliser le fichier d'autorisation par défaut; ajoutez les lignes suivantes au fichier project_repo / conf / svnserve.conf .

anon-access = none
authz-db = authz

Conventionnellement, chaque projet Subversion a trunk, tags, et branches répertoires directement sous le répertoire racine du projet.

Le tronc est un répertoire où se déroule tout le développement principal et est généralement extrait par les développeurs pour travailler sur le projet.

Le répertoire tags est utilisé pour stocker des instantanés nommés du projet. Lors de la création d'une version de production, l'équipe marquera le code qui entre dans la version.

Le répertoire branches est utilisé lorsque vous souhaitez poursuivre différentes lignes de développement.

Créons la structure des répertoires trunk, tags et branches sous le référentiel du projet.

[[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

Importez maintenant les répertoires de /tmp/svn-template au référentiel.

[[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]#

C'est fait! Nous avons créé avec succès le référentiel et autorisé l'accès àTom et Jerry. À partir de maintenant, ils peuvent effectuer toutes les opérations prises en charge sur le référentiel.