Monter un serveur SVN (subversion) et y accéder depuis Eclipse
Développement et ergonomie
Par djib le lundi 30 janvier 2006, 12:19 - Lien permanent
Introduction
Subversion (parfois abrégé SVN) est un logiciel de gestion de version. Selon l'article consacré de la Wikipédia :
La gestion de version (en anglais revision control) est une activité qui consiste à maintenir l'ensemble des versions d'un logiciel. Essentiellement utilisée dans le domaine de la création de logiciels, elle est surtout concernée par le code source ; mais elle peut être utilisée pour tout type de document informatique.
Vous l'aurez compris, mon article s'adresse donc aux développeurs qui veulent sauvegarder facilement leur travail, se donner la possibilité de revenir en arrière en cas d'erreur, ou bien de partager un projet avec des amis. Rien n'est bien compliqué et même un programmeur débutant ou occasionel devrait pouvoir s'y retrouver.
Eclipse est un environnement de développement intégré (IDE en Anglais) qui est d'une puissance remarquable. Certainement l'un des projets libres les plus remarquables (merci IBM).
Mettre en place un serveur SVN
Sur la machine sur laquelle vous voulez faire tourner le serveur, suivez les étapes suivantes :
- Installez subversion. Sur une Ubuntu (ou Ubuntu Server) un petit
sudo apt-get install subversiondevrait faire l'affaire.
- Créez un répertoire dans lequel vous voulez stoquer les fichiers du serveur SVN et placez vous dans ce répertoire
bash$ {mkdir,cd} svn
- Créez ensuite un dépôt SVN
bash$ svnadmin create myProject
bash$ cd myProject
- Modifiez les fichiers de configuration
bash$ cd conf
bash$ edit svnserve.conf
Il vous suffit en fait de supprimer tous les # mais pas les ###
- Dans le même répertoire (
conf) créez un fichierpasswdcontenant le texte suivant (adapté bien sûr à vos besoins)
[users] monlogin = monmotdepasse monautrelogin = monautremotdepasse
- Démarrez le démon svn en lui donnant le dépôt que vous avez créé plus haut comme argument
svnserve -d -r ~/svn/myProject/
- Vous pouvez ensuite accéder à votre serveur svn en ligne de commande depuis l'ordinateur client... mais autant utiliser une belle interface graphique.
Configurer Eclipse
Pour les utilisateurs de Ubuntu, Eclipse est aussi disponible dans les dépôts (dans universe plus précisément) et donc un apt-cache search eclipse devrait vous montrer tout ce que vous pouvez installer (en fonction de vos besoins de programmeurs).
Eclipse ne supporte pas le SVN par défaut. Nous allons donc installer une rustine qui fait le travail.
- Allez dans Help>Software updates>Find and Install
- Cliquez sur search for new features
- Ajoutez un nouveau site disant (remote site) du nom de Subclipse (
http://subclipse.tigris.org/update) - Installez subclipse qui vous apportera le support du svn
Accéder à votre serveur SVN dans Eclipse
- Allez dans Go to Window>open Perspective>new et choisissez SVN repository exploring.
- Cliquez avec le bouton droit dans SVN Repository et cliquez sur add>new repository.
- Dans url mettez le nom complet de votre serveur svn (par exemple
svn://monpc.mondomaine.org/)$$Vous pouvez aussi créer des sous répertoires si vous voulez plusieurs projets sur votre même serveur... mais je n'en parlerai pas ici). root url est la même adresse. - Entrez votre login et mot de passe comme décrit dans le fichier passwd ci-dessus.
Partager un projet sur SVN
- Allez dans votre perspective de développement favorite (par exemple Java perspective).
- Cliquez avec le bouton droit sur la racine du projet à partager.
- Allez dans Team>Share project.
- Choisissez SVN[1]
- Choisissez votre dépôt svn.
Et ensuite ?
Ensuite chaque fois que vous voulez partager un nouveau fichier vous devez sélectionner le fichier et dans Team choisir add to version control.
L'option commit toujours dans Team est celle qui vous permet d'envoyer votre travail. A chaque fois Eclipse (en fait svn) vous demandera d'entrer un commentaire. Je vous conseille de le faire car cela vous permettra de vous y retrouver dans votre travail pas la suite.
Vous pouvez aussi récupérer des fichier depuis votre dépôt en allant dans la perspective svn. Vous pouvez comparer les versions, créer des tags (qui vous permettent de revenir facilement sur des versions stables)... bref, c'est génial.
Merci
Merci à Yann de m'avoir fait découvert le svn, de m'avoir guidé au début, et surtout d'avoir réussi à me convaincre. Grâce à mon serveur j'ai économisé de longues heures de travail, surtout puisque je peux revenir sur la dernière version qui fonctionnait en cas de problème, mais aussi puisque je me sens rassuré sachant que tous mes fichiers sont sauvegardés et que je ne risque donc pas de perdre mon travail.
Notes
[1] J'obtiens un message d'erreur à ce niveau, mais il n'influe pas sur la suite.



Commentaires
Depuis que je travaille avec sourceforge, j'ai pu découvrir les bienfaits du CVS et c'est vraiment top ; SVN, c'est le même principe ; je rentre chez moi et je m'empresse de l'installer
Salut szdavid.
Content que ça te plaise. Si tu trouves une erreur dans mon billet n'hésite pas à me le dire.
Suversion est effectivement comme le CVS mais plus récent et donc un peu plus avancé. En effet par exemple lorsqu'un fichier est renommé on ne perd pas son historique, ce qui se passait sous CVS. Je n'y connais pas grand chose mais sur la wikipédia il y a plus de détails (sur la version anglaise en tous les cas).
Le plus simple est quand même d'utiliser svn+ssh au lieu de svnserve (et c'est nettement plus rapide, aussi)
Sinon, il y a un livre en ligne sur svnbook.red-bean.com/ qui est très bien fait (anglais uniquement à ma connaissance)
arrivant un peu tard, je ne peux que plussoyer fortement. SVN est largement plus compréhensible que CVS concernant son fonctionnement et il est débarrassé des archaïsmes de CVS en ligne de commande. Faire un commit ?
$ svn ci
et pas une ligne de douze mètres de long.
De plus, le livre pointé par Lucas est effectivement une référence du genre - quel dommage qu'il ne soit pas dispo en Français.
Personnellement, j'utilise SVN pour toutes mes docs "texte", elles permettents d'archiver à peu de frais tous les "petits bouts" qui pourraient se perdre comme autant de post-its sur mon bureau.
Un argument de plus - le couple Python / SVN :
A l'EUROOSCON d'octobre dernier, j'ai assisté à une conférence de Greg Stein (de Google) sur les bindings Python / Subversion, qui permettent toutes les opérations possibles sur un dépôt / un working dir Subversion en Python.
A quand un client en Python/GTK+ pour Subversion ? (Rapid SVN est assez mal fait, de mon humble point de vue...)
Merci nKo'. Effectivement je pense que c'est effectivement une bonne idée d'utiliser svn quand c'est possible (typiquement les documents textes) et pas seulement pour la programmation.
Lucas merci pour le livre, je vais y jeter un coup d'oeil car j'avoue que je suis pour l'instant grand débutant du svn. Mais je suis déjà un adepte !
Je suis pas mal intéressé par ce système de fichier "texte" pour le svn ; avec quoi le gères tu ?
Un complément intéressant, qui ajoute un wiki, une gestion de bug, une gestion de roadmap et un historique des modifications est le système TRAC : projects.edgewall.com/tra...
Pour ma part j'utilise soit Eclipse soit (très peu) la konsole pour faire du svn. Peut-être que kNo' a un meilleur outil...
Yarod je trouve que l'idée est très bonne. Par contre moi je suis sur hébergé sur un serveur mutualisé... donc cette solution n'est pas top :'(
Superbe... vraiment bien... génial, voilà ce qui me vient à l'esprit !!! Merci pour cet article, il va me changer la vie ! ! !
Plus généralement, je trouve ce genre d'article (applicable à la vie professionnelle plus qu'intéressant.
Merci !
Matdere merci pour tes remarques élogieuses. Ca fait plaisir !
Salut.
moije j'ai donc un problème.
lorsque qu j'essaye : svnadmin create myProject
j'obtient un message d'erreur :
svnadmin: error: cannot set LC_ALL locale
svnadmin: error: environment variable LANG is fr_FR
svnadmin: error: please check that your locale name is correct
zsh: exit 1 svnadmin create myproject
quelqu'un peut-il m'aider.
Merci.
Salut Yingyan,
Tu as visiblement un souci avec tes "locales" qui configurent la langue de ton linux.
Dans une console tapes "sudo dpkg-reconfigure locales". Dans la liste qui apparait tu devrais avoir une longue liste d'options, l'une d'entre elles étant FR_fr@euro. Assure-toi qu'il y ait bien une étoile devant (c'est-à-dire que l'option est sélectionnée). Valide ce choix puis choisis FR_fr@euro comme option par defaut dans l'écran suivant.
Si ça ne marche toujours pas, reposte un message.
Salut djib, j'ai le meme probleme que Yingyan.
J'ai fait ce que tu as indiqué mais ca ne change rien chez moi...
Voilà ce que j'ai apres dpgk :
"nicko@ubuntu:~$ sudo dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "fr_FR:fr",
LC_ALL = (unset),
LANG = "fr_FR"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_CTYPE to default locale: No such file or director y
/usr/bin/locale: Cannot set LC_MESSAGES to default locale: No such file or direc tory
/usr/bin/locale: Cannot set LC_ALL to default locale: No such file or directory
Generating locales...
;en_US.UTF-8...cannot open locale definition file `;en_US': No such file or di rectory
"
Dans la boite de dialogue qui est apparue j'ai enlevé toutes les astérisques sauf fr_FR@euro.
Merci
Salut nicko_510,
Je te conseille de réessayer de configurer tes locales en mettant:
[*] fr_FR ISO-8859-1
[*] fr_FR.UTF-8 UTF-8
[*] fr_FR@euro ISO-8859-15
et aussi
[*] en_GB ISO-8859-1
[*] en_GB.UTF-8 UTF-8
Après tu sélectionnes
fr_FR.UTF-8
par défaut.
J'espère que ça va marcher, sinon reposte un commentaire...
Bon j'avance un peu. Apparement pour le francais c'est bon, mais pas pour l'anglais :
"fr_FR.UTF-8... done
;en_US.UTF-8...cannot open locale definition file `;en_US': No such file or directory"
J'ai coché aussi en_US.UTF-8, mais ça n'a rien changé.
J'ai toujours le meme message d'erreur pour le svn...
Tiens c'est étrange tout ça...
Tu utilises Hoary ou Dapper ? Est-ce que ton système est à jour ?
Essaie de faire un sudo apt-get update puis sudo apt-get upgrade puis refait une configuration des locales...
Non, j'ai une 5.10 breezy. J'ai fait l'update et l'upgrade mais ça ne change rien non plus.
Je ne sais pas comment ça marche mais c'est pas un paquet qu'il faut installer pour avoir en_us ?
Salut,
Je crains de ne pas pouvoir plus t'aider... Je n'ai jamais eu ce genre de problèmes. Essaie de poster une question sur un forum du genre www.linuxquestions.org, ou www.ubuntu.com. Sinon tu peux chercher sur www.google.com...
Bon courage !
Bonjour,
J'ai eu le même problème pour les LC_LOCAL.
Pour le résoudre déjà suivez la procédure de Djib pour vérifier que les locales sont configurés correctement.
Ceci n'a pas suffit pour résoudre le problème chez moi, j'ai réussi en corrigeant mon .bashrc : j'ai corrigé les lignes suivantes qui avaient "fr" au lieu de "fr_FR"
LANGUAGE=fr_FR
LC_MESSAGES=fr_FR
LC_ALL=fr_FR
LANG=fr_FR
Je me suis déloggué et reloggué et ça marche.
Merci pour ces précisions Sylvio.
Merci pour ces précisions Sylvio.
Bonjour,
je suis en train de suivre le tuto est je me trouve bloqué...(en fait, j'ai pas commencé avec ce tuto, c'et parce que je suis bloqué que que je continue à chercher)...
Enfin bon, j'ai un serveur svn qui tournent, j'entends par là que je réussit à l'utiliser en ligne de commande en utilisant l'adresse svn://localhost.
Pour l'instant, je n'ai que window sur la machine, alors je ne peux tester qu'en me connectant avec putty sur le serveur...enfin ca marche.
Maintenant, j'essaie d'utiliser subclipse. Là c'est le drame, il refuse de prendre svn://... .com, parce que il y a un correcterur integré qui m'empèche de valider en laissant le message : Invalid Host name, c'est assez rageant... j'essaie aussi en utilisant directement l'ip, en faisant svn://192.168.1.25, ca ne passe pas.
Alors j'ai essayé sans le svn : 192.168.1.25, et là je me retrouve avec l'erreur : Unable to Validate
Error validating location : "Could not connect to :pcserver:vincent@192.168.1.25:/projet_test: cannot connect to host: Connection refused : connect"
Donc je en sais pas trop quoi faire, je vais essayé de tester ca d'une autre machine linux en ligne de commande...
merci d'avance,
vincent
Salut,
Essaie effectivement de te connecter en ligne de commande depuis une autre machine parce que si tu utilises putty, tu es ensuite en local et le problème est donc assez différent (par exemple si il y a un firewall, il ne t'embêtera pas en local).
Tiens moi au courant.
Bonjour, je tiens avant tout à dire que cet article est vraiment très bien fait et m'a beaucoup aidé. En effet, j'avais déjà trouvé plusieurs articles pour configurer svn et j'avais trouvé ça tellement compliqué que j'avais abandonné l'idée...
j'aurai pourtant une petite question, quand tu dis :
Vous pouvez aussi créer des sous répertoires si vous voulez plusieurs projets sur votre même serveur... mais je n'en parlerai pas ici).
est ce que tu sais où je pourrais trouver des infos là dessus??
parceque évidement créer plusieurs projet signifie aussi avoir des fichiers d'authetification différent par projet et là je but un peu.
Merci d'avance :P
Salut Skazog et merci.
Une solution à ton problème pourrait être de faire tourner plusieurs démons svn avec des configurations différentes : un pour chaque projet.
Si tu lis un peu l'anglais, svnbook.red-bean.com/ est une référence et tu y trouveras peut-être ton bonheur.
Bonjour,
J'utilise subversion avec eclipse, pour du développement PHP.
Le dossier contenant la version 'live' du site web sur mon serveur est une working copy du repository. Jusqu'à présent, lorsque je voulais créais un nouveau dossier dans mon arborescence du site, je le créais dans mon IDE eclipse, puis je le commitais.
Enfin, pour qu'il apparaisse dans l'arborescence du site web, je faisais un 'svn update' en shell en me positionnant sur la racine de cette arborescence. Ainsi, le nouveau dossier apparaissait dans la working copy web.
Le problème est que depuis aujourd'hui, sans que sache ce qui a bien pu se produire, le svn update ne marche plus. Ou plutot, il fonctionne puisqu'il crée bien le dossier, et ces sous dossiers et fichiers, mais il m'indique une erreur comme quoi il ne peut pas 'open [monnouveaudossier]/.svn/lock'. Parallèlement, les autorisations du dossiers et de ses sous éléments sont passés en 'root:apache' et pour certains fichiers et dossiers, en 644. Je précise que avant le svn update, le propriétaire de tout ça était 'apache:apache' et que tout les dossiers étaient en 2775, et tout les fichiers en 0664.
Je n'y comprend rien. Pourquoi cette commande svn modifie ainsi les droits des fichiers au point de ne pouvoir créer ce fichier 'lock' dans le dossier caché .svn du dossier que je veux rajouter ??
est-ce un problème de système de fichier ou un problème d'utilisateur, ou un autre problème ?
Salut,
C'est un problème étrange. As-tu essayé de rechanger les droits des fichiers (en ayant fait une sauvegarde auparavant). Je ne vois pas pourquoi le svn commit pourrait changer les droits...
Sinon consulte les fichiers de log de ton système pour voir si c'est pas un petit malin qui s'est connecté sur ton serveur.
Oui j'ai bien rechangé les droits et les users plusieurs fois lors de mes nombreuses tentatives. Par ailleurs, ce n'est pas lors du commit que les droits sont changés, mais lors du svn update pour la working copy web. C'est aussi à ce moment que j'ai le message d'erreur pour cd fichier lock qu'il n'arrive pas à créer. Concernant une éventuelle intrusion, je n'ai rien d'inconnu dans mes logs. Par contre j'ai regardé la configuration du service svnserve, et il est lancé par l'utilisateur root. Or j'ai lu je ne sais plus ou qu'il valait mieux créer un utilisateur svn et lui faire lancer le service. Est-ce que ça pourrait avoir un rapport ?
Si svnserve est lancé par le root, cela peut expliquer le changerment de groupe...
Je suis désolé mais en tous les cas je pense que ton problème est au dessus de mes compétences. Trouve un forum dédié au svn ou bien poste un "bug report".
Chalu : )
Moi aussi j'utilise subversion et subclipse. Tout va bien tout marche, mais il y a un point qui ne me plait pas. Avec subversion, normalement lorsqu'il y a une erreur dans le programme il refuse d'effectuer le commit. Mais avec "Sub-Eclipse" il ne dit rien... C'est normal ou c'est moi qui n'ait pas paramétré quelque chose? Je veux bien compter sur la bonne foi de mon binome pour qu'il commit seulement quand tout est ok, mais bon...
Quelqu'un a une idée ?
Muchas gracias
finalement chui pas si sur de ce que j'avance. J'ai des doutes quant à la gestion d'erreur avec subversion. J'ai du confondre. Il serait balaise le petit pour savoir s'il y a une erreur quelque soit le type de fichier qu'on lui balance :D
Par contre ma question demeure: est ce qu'on peut lui faire gérer les erreurs trouvées par eclipse, ie pas de commit si eclipse signale une erreur.
ps: est ce que CVS gérait les erreurs?
Je suis désolé Camino, mais tu me poses un colle
Salut,
très bon tuto. Depuis le temps que je cherchais...
Je ne suis pourtant pas au bout.
En fait je ne comprends pas ta phrase
"mettez le nom complet de votre serveur svn"
C'est quoi mon serveur svn?
Moi je fais des essais avec un répertoire qui est sur mon bureau
cd /home/crm/Desktop/svn/myProject/
Alors je dois mettre quoi?
svn://localhost
ou bien?
Merci pour ton aide.
Merci pour tes compliments.
A priori oui il faut que tu mettes svn://localhost/.
Salut,
Merci pour le tuto, mais j'ai un petit soucis.
Apparement, le serveur fonctionne (svnserve apparait dans mes processus) et, par le biais de "eSvn", j'arrive à y accéder.
Mais quand je veux y accéder depuis l'extérieur, même en réseau, j'ai une erreur qui me renvoie à une ligne du fichier de conf:
"anon-access = read".
Je pensais laisser ça vu qu'en lecture, je veux une authentification juste en écriture.
Une solution ?
Merci d'avance
Quel est le message d'erreur que tu as ?
Salut,
Désolé de répondre aussi tard.
Il me renvoie l'erreur suivante:
"svn: /var/www/svn/myProject/conf/svnserve.conf:12: Option expected", qui correspond à:
"anon-access = read" du cfichier de conf
et j'ai du m'avancer un peu trop car j'ai cette erreur sous Eclipse même en local.
Merci d'avance
UncleSam, as-tu bien décommenté la ligne 8 ([general])... A priori je ne vois que ça comme problème.
Re,
Oui oui, tout à fait. Mon fichier de conf, sans les commentaires, ressemble à:
[general]
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
realm = My First Repository
Mais, quand je lis le README, il me dit qu'il ne faut pas modifier l'arborescence : faut-il créer un sous-repertoire qui contiendra le projet ?
Voili voilou
Il ne faut pas que tu crées manuellement de répertoires ou quoi que ce soit. Il faut a chaque fois passer par svn pour ces opérations.
Mais alors, la toute première fois que je veux m'en servir, je devrai pouvoir quand même me connecter.
J'avoue, je sais plus quoi trop penser
Je sais pas du tout, je ne suis pas spécialiste et je n'ai jamais eu ce problème. Essaie de recommencer tout point par point :
* création du répertoire projet *grâce à svnadmin*,
* édition du fichier de configuration,
* création d'un fichier de mots de passe dans le même répertoire de configuration,
* lancement du serveur.
Bon courage.
Il suffit de bien effacer les espaces avant les options de configurations après avoir décommenté le code (effacé les #).
/james
Au fait, merci pour cet excellent tutoriel à Subclipse, aussi est-ce la première fois que j'utilise eclipse
Super pour le coup des espaces. Merci pour tes commentaires James.
jai besoin des cours en français(documentations) sur svn avec eclipse svp
Bonjour,
Je ne sais pas si ça existe. Les documentations que je connais sont en Anglais.
Bonjour.
Dans le cadre de développement multi-site, est-il possible qu'un serveur SVN soit également client d'un "super-serveur" SVN ?
Ceci dans le but de permettre de faire des backups à plusieurs niveaux et de pouvoir développer localement, chaque site sur son serveur SVN.
Merci
... et merci beaucoup pour le tuto avant tout
Bonjour LeParrain.
Je ne sais pas si il est possible d'avoir plusieurs serveurs distribués, mais il est possible de faire des exports du dépôt SVN pour permettre de faire des sauvegardes. Ce n'est pas vraiment ce que tu cherches mais c'est peut-être une solution.