Introduction :
Subversion est un système de contrôle de versions (ou gestionnaire de sources). Il autorise plusieurs personnes à travailler sur des documents communs (chacun en ayant une copie sur leur propre machine), et permet des synchronisations entre les différentes versions de ces documents, des retours en arrière vers des versions plus anciennes, un suivi des modifications au cours du temps. Il fonctionne dans un modèle copie-modifie-fusionne, c'est à dire qu'un utilisateur sort une copie des fichiers du dépôt dans un espace de travail local, modifie ces fichiers localement (il peut alors très bien ne plus être connecté au serveur), puis demande lorsqu'il le veut que ses modifications soient reportées dans le dépôt. Il peut aussi demander que sa version locale de travail soit re-synchronisée avec la dernière version du dépôt (pour récupérer les modifs des copains).
Glossaire :
Repository :
Dépôt de logiciels. Un répertoire dans lequel subversion stocke les informations nécessaires au contrôle de versions d'une série de projets.
Checkout :
Opération d'extraction d'une version d'un projet du repository vers un répertoire de travail local.
Commit :
Opération de validation des modifications réalisées dans le répertoire de travail local et de propagation dans le repository d'où il est issu.
Update :
Opération de mise à jour des documents du répertoire de travail local par ceux du repository.
Installation :
Nous allons ici installer un serveur svn+ssh sur votre machine sous Debian et un client SVN sous windows(TortoiseSVN).
Mise à jour des sources :
apt-get update
Installation du paquet Subversion :
apt-get install subversion
L'authentification sera ici basée sur ssh, pour la facilité de gestion et la sécurité des transferts, mais il est également possible de créer un fichier de comptes autorisés.
La toute première chose à faire est de créer un nouveau repository (un endroit spécifique où seront stockées les données sur le serveur). On utilise pour cela la commande d'administration svnadmin.
Création du votre dossier ( ici /home/subversion )
mkdir /home/subversion
Création du repository :
svnadmin create --fs-type fsfs /home/subversion
La commande svnadmin create lance la création des structures nécessaires au repository dans le répertoire /home/subversion. L'option --fs-type permet de créer le repository au format 'FSFS', un nouveau système de fichier propre à subversion plus performant que les bases de données BDB.
Il faut maintenant créer un groupe ou bien attriuer un groupe existant au répertoire. Prenont par exemple un groupe adminsvn contenant les utilisateurs existants user1, user2, userX.....
Création du groupe adminsvn
groupadd adminsvn
ajout des utilisateurs existants dans le groupe adminsvn :
adduser user1 adminsvn
adduser user2 adminsvn
Nous devons maintenant attribuer les droits au groupe adminsvn sur le dossier /home/subversion
chgrp -R adminsvn /home/subversion
chmod -R 770 /home/subversion
Les utilisateurs du groupe adminsvn ont maintenant tout les droits sur le dossier Subversion.
Pour faire le premier import de fichiers qui sont déjà sur votre serveur, vous pouvez utiliser la commande suivante :
svn import /home/mon_rep_a_importer file:///home/subversion -m 'Import initial'
Pour la suite du tuto, nous considérerons que votre serveur ssh fonctionne correctement et que les utilisateurs se trouvant dans le groupe adminsvn doivent pouvoir seconnecter via ssh. Pour plus d'information sur la mise en place d'un serveur ssh, reportez-vous au tutorial correspondant.
Client Windows
Le client utilisé sous Windows sera ici TortoiseSVN.
Créer un dossier sous Windows qui se synchronisera avec votre serveur SVN.
Après l'installation de TortoiseSVN, faites un clique droit sur le dossier créer et cliquez sur SVN CheckOut.
Dans URL of repository entrez :
svn+ssh://userX@Adresse_Serveur/home/subversion
Puis cliquez sur OK.
Le logiciel va vous demander plusieurs fois votre mot de passe (normalement 3 fois). Si tout se passe bien, tous les fichiers présent sur le serveur SVN vont être copié en local dans votre dossier windows.
Vous travaillez maintenant en local sur les fichiers, pour appliquer vos modifications faites un clique droit sur le dossier puis SVN Commit. Il va alors mettre à jour toute les modifications vers le serveur.
Pour mettre à jour les documents présents sur votre machine locale par ceux du SVN, faites un clique droit sur le dossier puis SVN Update
Fonctions utiles :
Réutiliser un dossier subversion sur le serveur après un formatage ou un changement de répertoire :
svnadmin recover /chemin_vers_le_dossier/
Pour avoir une idée de l'état de votre dépot local :
svn status
Pour ajouter un fichier au dépot :
svn add
Pour voir la différence entre deux révisions :
svn diff
Pour résoudre un conflit :
svn resolved
Pour changer l'adresse du serveur SVN :
svn switch --relocate svn+ssh://ancienne_adresse svn+ssh://nouvelle_adresse
Si vous avez des doutes sur l'utilisation de ces commandes :
svn help ma commande