SVN, installation et configuration

© Christian PAULUS. Document créé le 7 septembre 2007 , mis à jour le 8 janvier 2011.

L'éternité c'est long, surtout vers la fin. Woody Allen

Accueil du site > Astuces > SVN > SVN, installation et configuration

Subversion, TortoiseSVN / FreeBSD 6.0, Windows XP

Subversion sous FreeBSD, TortoiseSVN sous Windows XP.

Nota : les versions de Subversion et TortoiseSVN antérieures à la 1.4.5 présentent un défaut de sécurité. Voir l’article sur zataz pour complément d’information à ce propos.

Installation de subversion sur FreeBSD

Subversion fait partie des ports disponibles :

cd /usr/ports/devel/subversion
make install && make clean

Créez un utilisateur svn à l’aide de adduser, et attachez-le au groupe svn (à créer dans etc/group).

Copiez dans /etc/rc.conf les lignes nécessaires à la configuration de subversion. Du style :

svnserve_enable="YES"
svnserve_data="/home/svn/"
svnserve_user="svn"
svnserve_group="svn"

Démarrez le service :

cd /usr/local/etc/rc.d
./svnserve.sh start

Installation de TortoiseSVN

Récupérez la dernière version sur SourceForge.net et son patch pour la francisation sur Tortoisesvn.net.

Installez d’abord TortoiseSVN, puis après avoir redémarré l’ordinateur (dur monde Windows), appliquez le patch.

Créer un référentiel

TortoiseSVN ne propose pas de créer un module sur un serveur SVN autre que local à Windows. Les utilisateurs de TortoiseCVS seront déçus. Une vieille habitude bien pratique de perdue !

Pour créer le module sur votre serveur Unix, utilisez la commande svnadmin dans le répertoire de l’utilisateur svn :

cd ~svn
svnadmin create mon_projet

Vérifiez la présente du dossier mon_projet dans le répertoire home de svn. Ne pas oublier, si besoin, de lui donner les droits d’accès :

chown –R svn:svn mon_projet

Pour donner l’accès à un groupe de travail, rajoutez les utilisateurs à /etc/group sans oublier de donner les droits d’accès du groupe en écriture au répertoire.

cd ~svn
chmod -R g+w mon_projet

Notez bien que ce répertoire home contient tous les dépôts svn. Si vous voulez changer de répertoire de dépôts, ne pas oublier de corriger svnserve_data dans /etc/rc.conf et de redémarrer le service subversion.

Récupérer une distribution

Plusieurs protocoles disponibles. La documentation qui accompagne TortoiseSVN est particulièrement complète, à ce propos, mais aussi à l’utilisation de l’outil.

Peut-être dû à cette version de TortoiseSVN, la connexion en mode SVN/SSH oublie de préciser qu’il faut entrer le login dans l’URL, sinon, TortoiseSVN répondra « Erreur : Connection closed unexpectedly ».

Pour récupérer une distribution de votre serveur SVN :

- Créez un répertoire vide ;
- Entrez dans ce dossier, puis clic droit pour faire apparaître le menu contextuel. Choisissez SVN Extraire : PNG
- La boite de connexion apparaît, complétez le champ URL du référentiel sans oublier d’y indiquer votre login et le répertoire du projet. PNG

Ajouter un fichier

Bien agréable : le déplacer/ajouter en déplaçant un fichier d’un autre dossier sur votre dossier de travail en utilisant le bouton droit. PNG

L’aide en ligne est très pratique. Sa lecture est conseillée.

Les quelques différences notées entre TortoiseSVN et TortoiseCVS ne sont pas insurmontables à l’habitué de ce dernier. TortoiseSVN a par exemple, tendance à demander plus souvent le mot de passe. A noter aussi que la mise à jour des icones n’est pas aussi rapide. Un petit F5 après une action est parfois nécessaire.

Connexion svn sous FreeBSD

Si vous ne désirez pas utiliser le tunnel ssh pour vous connecter sur svn/FreeBSD, la solution la plus simple est de s’appuyer sur le service inetd.

Dans le fichier /etc/inetd.conf, ajoutez :

svn stream tcp nowait svn /usr/local/bin/svnserve svnserve --inetd --root=/home/svn/

Redémarrez le service :

/etc/rc.d/inetd restart

L’option —root du fichier de configuration inetd simplifie l’URL employé dans TortoiseSVN :

PNG

Gestion des droits d’accès

Si vous utilisez ssh (svn+ssh), l’authentification est prise en charge par ssh. Vous n’avez rien d’autres à configurer que le compte utilisateur de la machine (et les droits d’accès en écriture aux répertoires).

Si vous accédez à votre répertoire svn par le service svn, vous devez paramétrer le fichier conf/svnserve.conf qui se trouve dans le dossier du projet (dans cet exemple : mon_projet). Deux solutions proposées :

- Donner l’accès en lecture à tous, et en écriture à quelques uns ;
- Donner l’accès en écriture à tous.

Malheureusement, pour l’instant du moins, pour authentifier les accès, svnserve ne s’appuie pas sur /etc/password, ni ldap, etc. Pour un outil dit moderne, nous revoilà à gérer un fichier texte ou les mots de passe sont entrés en clair (non crypté).

Exemple du fichier svnserve.conf pour un accès en lecture à tous, en écriture à quelques-uns :

[general]
anon-access = read
auth-access = write
password-db = passwd

Le fichier passwd doit contenir les couples login /mot-de-passe, du style :

[users]
mon_login = mon_mot_de_passe

Exemple du fichier svnserve.conf pour un accès en écriture à tous :

[general]
anon-access = write

Pour un tout petit groupe de travail, cette solution a l’avantage de ne pas demander de mot de passe à chaque connexion, mais vous perdez le nom de l’auteur dans le journal. Impossible de savoir qui a effectué la dernière modification. Préférez plutôt la solution précédente (authentification avec fichier passwd en clair), TortoiseSVN vous propose dans ce cas de conserver en mémoire votre login/mot-de-passe (ce qu’il ne propose pas sous svn+ssh).

Consultez votre fichier conf/svnserve.conf pour les options complémentaires de configuration.

TortoiseSVN ou RapidSVN

Ces deux outils pour Windows présente une interface cliente pour accéder à un dépôt svnserve. TortoiseSVN a l’avantage d’être accessible via le menu contextuel. De plus, la gestion des branches/tags y est plus évidente. Les deux outils sont utilisables simultanément, sur le même poste. Pratique pour effectuer des tests (vérification de deux comptes authentifiés, etc.). Pratique également si vous souhaitez travailler sur plusieurs branches sans être obligé de switcher de l’une à l’autre.

RapidSVN est disponible sur le site RapidSVN.org

Configuration de TortoiseSVN

Il peut vous être nécessaire de configurer votre client TortoiseSVN pour, par exemple, éviter de placer dans le dépôt distant un fichier journal (*.log) sans intérêt pour la suite de votre projet.

- Cliquez avec le bouton droit dans n’importe quel dossier ou sur le bureau ;
- Allez sur le menu TortoiseSVN, le sous-menu apparaît ;
- Choisissez « Configuration » (en anglais : « Settings ») ;
- Dans la boîte de configuration qui apparaît, cliquez sur le bouton « Editer » qui se trouve à droite de « Fichier de configuration de Subversion » (en anglais : « Subversion configuration file »). La fenêtre d’édition apparaît ;
- Cherchez la ligne contenant « global-ignores ». Retirez si besoin les caractères de commentaires du début de ligne (« # »). Votre ligne doit ressembler à quelque chose du genre : global-ignores = *.log *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store
- Enregistrez le ficher de configuration et refermez cette fenêtre.

Avec cette ligne, les fichiers de journaux (log), temporaires ou invisibles seront ignorés par TortoiseSVN.

Les mots clés (keywords)

Les mots-clés ne sont pas par défaut reconnus et interprétés par TortoiseSVN. Il faut stipuler dans le fichier de configuration quels mots-clés doivent être interprétés, pour quels types de fichiers.

Les mots-clés de svn :

- URL, HeadURL : L’URL de la version HEAD (dernière version) de l’objet ;
- Author, LastChangedBy : La dernière personne qui a modifié le fichier ;
- Date, LastChangedDate : La date et heure de dernière modification de l’objet ;
- Rev, Revision, LastChangedRevision : Le dernier numéro de révision de l’objet ;
- Id : Un condensé des quatre derniers mots-clés (Nom du fichier, Revision, Date, Auteur).

Ainsi, si vous ajoutez dans le fichier de configuration de TortoiseSVN, dans le bloc [auto-props], une ligne du style :

*.php = svn:eol-style=LF; svn:keywords=Id Date Revision Author

Tous les nouveaux fichiers PHP, portant le suffixe « php », seront enregistrés à la mode Unix (LF). TortoiseSVN interprétera, s’il trouve ces mots-clés dans ce fichier PHP, les mots clés Id, Date, Revision et Author.

Comme pour CVS, les mots-clés doivent être enveloppés d’un « $ » (dollar).

Exemple : avant le commit du fichier nommé « mon_script.php » :

<?php
    
// $Id$
?>

Après le commit :

<?php
    
// $Id: mon_script.php 51 2007-09-10 11:39:02Z mon_login_svn $
?>

Les habitués de CVS noteront l’absence dans SVN des mots-clés Log et Locker.

Plussoyez !

Les forums sont fermés.