Subversion: un outil indispensable
Publié le 10 March 2008, par Babozor dans la catégorie Administration serveur, DéveloppementDepuis maintenant les quelques années que je travaille dans le développement pour le web, une fonctionnalité a changé ma vie de développeur: les outils de versionning et SubVersion en particulier (je parlerais de mes malheureuses aventures avec CVS peut être dans un autre post)
1. C’est quoi un outil de versionning
Un outil de versionning c’est un outil qui va vous permettre de stocker différentes version de vos fichiers. Il existe plusieurs types d’outils de versionning (si je me trompes pas Microsoft à lui aussi un outil de versionning), mais les plus connus sont CVS et son petit cousin SubVersion.
2. Pourquoi le mettre en place?
Si vous êtes plusieurs à travailler sur un projet en particulier si certains fichiers sont en commun, si vous désirez garder une trace des différentes versions de vos fichiers… les outils de versionning sont faits pour vous.
Pour résumer si vous travaillez dans le développement, vous avez 98% de chance d’avoir besoin de cet outil (même pour les graphistes cela peut se révéler très utile).
3. Les contraintes
Elles sont pu nombreuses:
- de la discipline (s’astreindre à suivre la procédure en place, ne pas buypasser le système même si cela paraît plus simple, au final tout le monde y perds)
- updater et commiter souvent (ce sont les deux actions principales pour mettre à jour et envoyer une nouvelle version du fichier)
- commenter ses commit (si vous avez 275 versions d’un fichier en une semaine, même si les révisions sont notées par heure d’envoi, sans commentaires efficaces vous allez vous y perdre très vite)
4. Architecture typique

Imaginons par exemple que vous ayez deux développeurs: machin et bidule, une plateforme de test et une plateforme de production.
L’architecture typique est d’avoir 4 environnements distincts tous synchronisés avec votre Repository (l’endroit où subversion stocke les fichiers et leurs modifications)
5. Les défauts?
Ils ne sont pas nombreux:
- expliquer et éduquer comment bien utiliser subversion (et avec certains ça peut prendre du temps)
- devoir résoudre certains conflits “à la main”
Et vous est ce que vous utilisez des outils de versionning?


le 10 March 2008 à 13h13
Ça fait plusieurs années que j’utilise Subversion, c’est vraiment un outil à maîtriser ! La gestion des branch / tag est pas mal faite non plus, le système de merging donne cependant des résultats étrange parfois…
Sinon, la relève, GIT, est très prometteuse et apporte pas mal de rectifications aux défauts de SVN !
le 10 March 2008 à 13h23
Certes, Subversion est pour moi le plus performant à l’heure actuelle.
Cependant, le petit bijou de Linus T. (GIT) est pas loin derrière. Il lui manque juste un client à la Tortoise et je change de solution de subversioning.
Concernant Microsoft, si vous développez en .NET, et que ce soit web ou client lourd, il existe (existait ?) Visual Sourcesafe (VSS) : lourd, long, l’inverse de Subversion grosso modo
Aujourd’hui Team Foundation Server (TFS) a pris la place de VSS comme solution de versionning MS.
TFS est un outil puissant, qui peut être couplé avec un Sharepoint (tout comme Subversion peut l’être avec Trac).
L’inconvénient de celui-ci : prévoyez une très grosse bécane pour le faire tourner (2Go de ram au moins) il est lourd, très lourd (tourne avec Sql Server et IIS).
le 10 March 2008 à 14h19
bzr et mercurial sont sans conteste plus flexibles que SVN.
A titre personnel, j’ai jamais réussi un merge SVN. J’en suis toujours à devoir détruire ma copie de travail, la re-télécharger intégralement et réessayer.
Avec les gestionnaires décentralisés, c’est beauuuuuucoup plus simple de créer des branches / faire des commits en local et rebalancer les résultats sans se prendre les pieds dans le tapis.
D’autant qu’on n’est pas tributaire d’une connexion web pour faire ses commits. Et j’ai passé 149 jours sans connexion à la maison ; autant dire que je suis beaucoup plus sensibilisé par rapport à ce genre de soucis…
le 10 March 2008 à 14h20
Je vois mal comment se passer d’un SCM si on travaille en équipe. Et puis vu la vitesse de migration de Subversion à Git dans la communauté Rails, je dirais que Git est la nouvelle solution de versionning performante et très très rapide (même s’il y en a bcp d’autres). Par contre la configuration est plus compliqué que Subversion (pour l’instant). A noter que github.com est vraiment très très bien et que j’ai 5 invitations pour
Et il y a une application en RubyCocoa pour GitHub : http://github.com/Caged/gitnub/tree/master
Voilà j’ai à peu près tout dit, pleins de liens et un article à venir sur Boldr.
le 10 March 2008 à 15h05
Etant dans une équipe à 90 % .NET, le choix naturel s’est porté vers VSS, même si Subversion + TortoireSVN parait être une alternative à tenter, notamment pour son accès Web.
le 10 March 2008 à 21h52
Je ne conçois même pas qu’on puisse encore travailler sans un système de contrôle de version. Même seul, même sur un projet trivial, le simple fait de savoir qu’on peut toujours revenir à n’importe quel point, revoir l’évolution du code, relire les derniers logs de commit pour se remettre en mémoire où on en était, regarder ce qui a changé depuis le dernier commit, tout ça rend l’outil incontournable. Et dès qu’on est plus d’un à travailler sur le projet, ça devient une non-question.
Par contre, l’”éducation” de certains est parfois un peu ardue, hélas. J’en ai encore autour de moi qui commitent des modifs non testées toutes les deux minutes et updatent la préprod (au mieux), voire directement la prod (au pire) pour les tester, tout ça pour faire “l’économie” de l’installation d’un environnement de travail local (SGBR + serveur web). Du coup, ça devient ingérable
le 10 March 2008 à 23h01
Mêmes reflexions que vous, je bosse sur CVS (via Eclipse), heuresement qu’on l’a ce bon vieux CVS malgré ses défauts :
“devoir résoudre certains conflits à la main”… olalala m’en parle pas
le 11 March 2008 à 15h14
Je travaille aussi avec SVN (Tortoise) en tant que traducteur d’un logiciel de forum.
Et en fait, je ne sais même pas comment je pouvais travailler sans lorsque je n’avais pas encore l’accès au serveur SVN.
C’est, comme cela a déjà été dit, un outil indispensable pour tout travail sur un projet en équipe.
le 12 March 2008 à 21h01
A noter qu’il y a 2 façons d’utiliser un outil de versioning.
1) de maniere décentralisée : comme sur l’exemple de ce blog : chacun possède un environnement de développement complet sur sa machine et les commits et les updates se font donc vers différents endroits.
2) de manière centralisée : il n’y a qu’un environnement de développement, et tout le monde travaille dessus. Les commits et les updates se font vers un seul endroit.
Avantage du 1) un développeur qui fait un bug ne bloque pas les autres développeurs puisque ça se produit sur SA machine uniquement
Inconvénient du 1) il faut installer un environnement de développement sur chaque machine et parfois c’est lourd
(réciproque)
Avantage du 2) il ne faut installer qu’un environnement de développement et parfois c’est beaucoup plus simple
inconvénient du 2) si un développeur fait un bug, l’application plante pour tout le monde.
le 13 March 2008 à 16h53
jimmy: “environnement de développement” ???
Euh… dans le centralisé COMME dans le décentralisé, il faut que chaque développeur ait un “environnement de développement”, c’est à dire à la fois un outil pour développer (les langages de programmation adéquats, les éditeurs de texte / IDE) + un outil de versionning (un client).
et dans un environnement centralisé, la seule chose qui soit centralisée, c’est le dépôt. il n’y a donc aucune chance pour qu’un bug créé sur le dépôt fasse planter les autres développeurs… puisque chaque développeur n’a qu’une copie de travail… voyons ça comme un serveur de fichier.
C’est pas parce que tu corromps un des fichiers qui se trouve dans l’arborescence que les autres utilisateurs ne peuvent plus utiliser cette arborescence.?…
le 14 March 2008 à 10h41
en effet, je crois qu’on se comprend mal au niveau “environnement de développement” .
je me suis peut-etre mal exprimé.
pour moi on fait du centralisé quand on hérite d’un projet tres compliqué, sur lequel 5 agences web sont passées dessus avant nous, avec un existant tres important qui implique par exemple l’enregistrement de 35 DLL, l’installation de plusieurs frameworks pcq 1 partie du site qui tourne sous un language version X, l’autre partie nécessitant language version X+1, etc…
Bref : le genre de projet titanesque et malheureusement bordelique qui nécessite au départ 3 jours rien que pour installer tout le système et le faire fonctionner en dev.
A ce moment là, une option est parfois de décider qu’on n’installe qu’*un* serveur de développement, et non pas un par développeur. dans ce cas là personne ne fait de “update” vers son localhost, mais vers un endroit centralisé.
est-ce que je suis plus clair ?
le 16 March 2008 à 17h09
J’utilise également Subversion depuis quelques années maintenant, ainsi que CVS sur certains projets open-source auxquels je participe.
Encore une fois fois, je suis de l’avis de tous ici : comment faisait-on avant ?!
Il n’en reste pas moins qu’il ne faut pas faire n’importe quoi et que la formation de l’équipe de développement (ainsi que des rôles tiers, tel que l’intégrateur HTML ou le développeur Flash) est indispensable !
Sans ça, on se retrouve avec des personnes qui utilisent Subversion sous contrainte et non comme une aide au travail, personnel et en équipe.
Pour rebondir sur les propos de Jimmy, je ne comprend pas comment une équipe de dev peut travaillé avec la même copie de travail sur un serveur de dev ? C’est aberrant non ou moi non plus je n’ai aps compris ta technique de “d’environnement centralisé” ?! :-/
le 17 March 2008 à 21h58
ce n’est pas “ma” technique
le 17 March 2008 à 22h01
Bah, tu diras à son auteur, que “sa” technique est mauvaise !
le 18 March 2008 à 20h35
“aberrant” ?
“mauvaise” ?
oh la oh la je ne suis pas d’accord
“(très) rare”
“uniquement pour certains énormes projets”
“aucun intéret et dangereux pour un petit projet”
là oui.
bon allez pour ma part, je clos le sujet.
on en reparlera autour d’une bonne biere, si un jour j’ai le plaisir de vous rencontrer !
a+
le 18 March 2008 à 21h59
Ok Jimmy, idem pour moi… et je prends note pour la bière !
le 27 June 2008 à 14h10
Qu’est ce que vous propose d’utiliser comme outil de versionning lorsque nous utilisons ACCESS 2007?
:o!
le 27 June 2008 à 14h12
Qu’est ce que vous propose d’utiliser comme outil de versionning lorsque nous utilisons ACCESS 2007?
le 28 June 2008 à 00h22
C’est une question piège ?