Différences entre versions de « Svn »

De The Linux Craftsman
Aller à la navigation Aller à la recherche
 
(8 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
{|border=1 class="wikitable"
 
{|border=1 class="wikitable"
! !! Client !! Serveur
+
! !! Serveur
 
|-align="center"
 
|-align="center"
| '''Protocole''' || udp || udp
+
| '''Protocole''' || tcp
 
|-align="center"
 
|-align="center"
| '''Port''' || 67 || 68
+
| '''Port''' || 3690
 
|-align="center"
 
|-align="center"
| '''Configuration Iptables''' || X || iptables -I INPUT 2 -p udp --dport 67 -j ACCEPT
+
| '''Configuration Iptables''' || iptables -I INPUT 2 -p tcp --dport 3690 -j ACCEPT
 
|}
 
|}
  
Ligne 25 : Ligne 25 :
 
* Un enregistrement d'un fichier s'appelle une ''VERSION'' du fichier
 
* Un enregistrement d'un fichier s'appelle une ''VERSION'' du fichier
  
Vous l'aurez comprit, SVN est un outil qui permet le travail collaboratif mais, comme à chaque fois que l'on travail en groupe, une certaine rigueur est à respecter !
+
Vous l'aurez compris, SVN est un outil qui permet le travail collaboratif mais, comme à chaque fois que l'on travaille en groupe, une certaine rigueur est à respecter !
  
 
= Préparation =
 
= Préparation =
Ligne 34 : Ligne 34 :
 
* [[resolv.conf|Configuration du client DNS]]
 
* [[resolv.conf|Configuration du client DNS]]
 
* [[ifcfg-ethX|Paramétrer sa carte réseau]]
 
* [[ifcfg-ethX|Paramétrer sa carte réseau]]
* [[SELinux|Désactiver SELinux]]
+
* [[SELinux#Changement_d.27.C3.A9tat|Désactiver SELinux]]
  
 
Une fois ces étapes effectuées, entrons dans le vif du sujet !
 
Une fois ces étapes effectuées, entrons dans le vif du sujet !
Ligne 41 : Ligne 41 :
  
 
<pre>
 
<pre>
# yum -y install subversion
+
# yum -y install subversion mod_dav mod_dav_svn
 
</pre>
 
</pre>
  
Ligne 52 : Ligne 52 :
 
</pre>
 
</pre>
  
Remplacer ''${NOM_DU_DEPOT}'' par le nom de votre dépôt et c'est fini !
+
Remplacez ''${NOM_DU_DEPOT}'' par le nom de votre dépôt et c'est fini !
  
 
= Accès au dépôt =
 
= Accès au dépôt =
 +
Tout d'abord, il faut faire un ''checkout'' du projet dans un répertoire que vous avez préalablement créé:
 +
 +
<pre>
 +
# svn co svn://${IP}/${NOM_DU_DEPOT}
 +
</pre>
 +
 +
Dans le répertoire vous devriez avoir les fichiers présent dans votre dépôt (ou rien si le dépôt est vide).
 +
 +
= Ajout d'un fichier ou dossier =
 +
Lorsque vous voulez ajouter un fichier au dépôt, utilisez la commande suivante:
 +
<pre>
 +
# svn add ${NOM_DU_FICHIER}
 +
</pre>
 +
 +
= Validation des changements =
 +
A chaque fois que vous faites des changements, il faut faire un ''commit'' pour pousser les changement sur le dépôt:
 +
<pre>
 +
#svn commit -m "Ajout du fichier ${NOM_DU_FICHIER}"
 +
</pre>
  
 
= Accès Web avec ''HTTPD'' =
 
= Accès Web avec ''HTTPD'' =
 +
La suite se déroule dans un fichier de configuration Apache (eg. ''/etc/httpd/conf.d/svn.conf'').
 +
== Création d'un hôte ==
 +
On doit créer un hôte virtuel pour s'occuper de notre dépôt SVN et ''ajouter'' à l'url ''svnroot'' de manière automatique:
 +
<pre>
 +
<VirtualHost svn:80>
 +
  ServerName svn.tala-informatique.fr
 +
  RedirectMatch ^/$ /svnroot/
 +
</VirtualHost>
 +
</pre>
 +
 +
== Activation de la lecture SVN ==
 +
Ensuite on a plus qu'à activer la lecture des sous-répertoire en mode '''DAV''' (base de données SVN):
 +
 +
<pre>
 +
<VirtualHost svn:80>
 +
  ...
 +
 +
  <Location /svnroot>
 +
      DAV svn
 +
      SVNListParentPath On
 +
      SVNParentPath /opt/SVNROOT
 +
      <LimitExcept GET PROPFIND OPTIONS REPORT>
 +
      </LimitExcept>
 +
  </Location>
 +
</VirtualHost>
 +
</pre>
 +
 +
Ici le répertoire racine ''SVN'' est ''/opt/SVNROOT'' mais vous pouvez adapter avec votre configuration.
 +
 +
== Ajout d'un mot de passe ==
 +
 +
Il est intéressant de limiter l'accès à certaine branche de votre dépôt et vous pouvez faire cela grâce à un [[HTTPD#Le_fichier_.htaccess|.htaccess]] et en ajoutant quelques lignes:
 +
<pre>
 +
<VirtualHost svn:80>
 +
  ...
 +
 +
  <Location /svnroot/projet1>
 +
      AuthType Basic
 +
      AuthName "Subversion de JCF"
 +
      AuthUserFile /etc/subversion/jcf
 +
      Require valid-user
 +
  </Location>
 +
</VirtualHost>
 +
</pre>

Version actuelle datée du 25 novembre 2019 à 17:21

Serveur
Protocole tcp
Port 3690
Configuration Iptables iptables -I INPUT 2 -p tcp --dport 3690 -j ACCEPT

Introduction

Définition

Subversion (en abrégé svn) est un logiciel de gestion de versions, distribué sous licence Apache et BSD. Il a été conçu pour remplacer CVS. Ses auteurs s'appuient volontairement sur les mêmes concepts (notamment sur le principe du dépôt centralisé et unique) et considèrent que le modèle de CVS est bon, seule son implémentation est perfectible. Wikipedia

Principe

On a un serveur qui centralise toutes les données et tous les développeurs se connectent à ce serveur lorsqu'il veulent enregistrer ou récupérer une version d'un fichier.

  • L'enregistrement s'appelle COMMIT
  • La récupération s'appelle UPDATE
  • Lorsque deux développeurs travaillent sur le même fichier et que les deux COMMIT il y a CONFLIT
  • Un conflit se résout en effectuant un MERGE (enregistrement des modifications des deux développeurs)
  • Un enregistrement d'un fichier s'appelle une VERSION du fichier

Vous l'aurez compris, SVN est un outil qui permet le travail collaboratif mais, comme à chaque fois que l'on travaille en groupe, une certaine rigueur est à respecter !

Préparation

Dans un premier temps, il faudra avoir une connexion à Internet, utiliser un serveur DNS et désactiver SELinux.

Pour ceux qui auraient manqué des étapes, les voici:

Une fois ces étapes effectuées, entrons dans le vif du sujet !

Installation

# yum -y install subversion mod_dav mod_dav_svn

Création d'un dépôt

La commande suivante permet de créer un dépôt SVN

# svnadmin create ${NOM_DU_DEPOT}

Remplacez ${NOM_DU_DEPOT} par le nom de votre dépôt et c'est fini !

Accès au dépôt

Tout d'abord, il faut faire un checkout du projet dans un répertoire que vous avez préalablement créé:

# svn co svn://${IP}/${NOM_DU_DEPOT}

Dans le répertoire vous devriez avoir les fichiers présent dans votre dépôt (ou rien si le dépôt est vide).

Ajout d'un fichier ou dossier

Lorsque vous voulez ajouter un fichier au dépôt, utilisez la commande suivante:

# svn add ${NOM_DU_FICHIER}

Validation des changements

A chaque fois que vous faites des changements, il faut faire un commit pour pousser les changement sur le dépôt:

#svn commit -m "Ajout du fichier ${NOM_DU_FICHIER}"

Accès Web avec HTTPD

La suite se déroule dans un fichier de configuration Apache (eg. /etc/httpd/conf.d/svn.conf).

Création d'un hôte

On doit créer un hôte virtuel pour s'occuper de notre dépôt SVN et ajouter à l'url svnroot de manière automatique:

<VirtualHost svn:80>
   ServerName svn.tala-informatique.fr
   RedirectMatch ^/$ /svnroot/
</VirtualHost>

Activation de la lecture SVN

Ensuite on a plus qu'à activer la lecture des sous-répertoire en mode DAV (base de données SVN):

<VirtualHost svn:80>
   ...

   <Location /svnroot>
      DAV svn
      SVNListParentPath On
      SVNParentPath /opt/SVNROOT
      <LimitExcept GET PROPFIND OPTIONS REPORT>
      </LimitExcept>
   </Location>
</VirtualHost>

Ici le répertoire racine SVN est /opt/SVNROOT mais vous pouvez adapter avec votre configuration.

Ajout d'un mot de passe

Il est intéressant de limiter l'accès à certaine branche de votre dépôt et vous pouvez faire cela grâce à un .htaccess et en ajoutant quelques lignes:

<VirtualHost svn:80>
   ...

   <Location /svnroot/projet1>
      AuthType Basic
      AuthName "Subversion de JCF"
      AuthUserFile /etc/subversion/jcf
      Require valid-user
   </Location>
</VirtualHost>