Subversion

Site officiel
Bookmark and Share

Un gestionnaire de version permet, comme son nom l’indique, de gérer les différentes versions d’un projet. Il est principalement utilisé pour maintenir le code source ou la documentation d’un logiciel, mais on pourrait, en théorie, l’employer dans bien d’autres domaines, comme par exemple, la conception d’un site web, ou la rédaction d’un rapport.

Le dépôt Subversion garde en mémoire toutes les versions commitées (validées). Il offre ainsi la possibilité de revenir rapidement à un moment particulier du développement, ou de déterminer les différences entre deux versions quelconques. Un gestionnaire de version facilite le travail collaboratif. Plusieurs personnes peuvent en effet travailler en parallèle, et mettre à jour leurs répertoires de travail locaux en fonction des modifications apportées par les autres. Dans le cas de Subversion, le dépôt intégre au mieux les différentes modifications, même si elles portent sur le même fichier. En cas de conflit, par exemple si la même partie du même fichier a été modifiée, le serveur prévient alors l’utilisateur et lui propose plusieurs solutions, comme par exemple, modifier sa version locale, ou celle en ligne.

Outre ces aspects, la plupart des gestionnaires de version proposent des fonctionnalités avancées comme la création de branches. Cela permet, par exemple, de travailler sur la future version d’un logiciel tout en maintenant les versions précédentes. Si un bug est découvert dans certaines versions du logiciel, on pourra facilement appliquer sa correction dans les branches correspondantes.

Un gestionnaire de version est donc un outil quasi indispendable pour un projet mené à plusieurs, mais peut également s’avérer très utile pour un projet personnel dès lors qu’il a atteint une certaine ampleur. Pour faciliter cet usage, la plupart des gestionnaires de version peuvent fonctionner en mode local, sans avoir besoin de mettre en place un serveur.

Le premier gestionnaire de version fut SCCS, développé en 1972. Au début des années 1980, RCS vit le jour. RCS est toujours utilisé à l’heure actuelle, mais le développement de son successeur, CVS, a débuté en 1984. Au début de l’année 2000, l’entreprise CollabNet a souhaité reprendre à zéro le développement d’un gestionnaire de version afin de pallier les limitations de CVS, et a commencé à travailler sur Subversion. Une partie des développeurs de CVS a rejoint le projet. La première version a été publiée début 2004. Il existe d’autres alternatives à CVS. Nous pouvons citer par exemple darcs qui a un fonctionnement différent de celui de CVS ou Subversion. Alors que pour ces derniers, il n’existe qu’un seul dépôt des sources (fonctionnement dit centralisé), pour darcs, chaque copie de travail est un dépôt complet (fonctionnement dit décentralisé).

Les limitations de CVS corrigées par SVN sont les suivantes :

  • Les modifications ne sont pas atomiques. Cela signifie que si vous modifiez dix fichiers en une seule transaction et qu’il y a un conflit sur le huitième fichier, les sept premiers seront validés, et le reste rejeté. Lorsque les modifications sur les dix fichier sont liées, les sources peuvent alors se retrouver dans un état non fonctionnel. À l’inverse, Subversion valide soit tout, soit rien ;
  • CVS ne connaît pas le renommage des fichiers. Renommer un fichier avec CVS revient à le supprimer puis à le recréer, ce qui a pour effet de perdre son historique, ce n’est plus le cas avec Subversion ;
  • Les répertoires et les métadonnées des fichiers ne sont pas versionnés ;
  • De plus, les performances ont été ameliorées dans de nombreuses circonstances : création de branches ou d’étiquettes plus rapide, historique des fichiers binaires plus performant, communications client/serveur inutiles supprimées.

Il existe de nombreuses interfaces graphiques permettant d’utiliser Subversion, comme RapidSVN (multiplateforme), ou TortoiseSVN (une extension de l’explorateur Windows). Mais si vous devez utiliser Subversion de manière intensive et régulière, vous gagnerez, au final, un temps considérable en apprenant à vous servir du client SVN en ligne de commande.

Il existe aussi deux plugins supportant SVN pour Eclipse, nommés Subclipse et Subversive permettant ainsi aux développeurs de n’avoir qu’une seule interface pour le développement et la gestion de version. Dans le cadre d’une gestion de configuration (Gestion de version et gestion des changements), il est possible de lier subversion à certains outils comme Trac.

La dernière version testée apporte une meilleure stabilité, un nouveau système de synchronisation de mirroirs (svnsync), le support de la base de donnée BerkeleyDB 4.4(et sa fonction de récupération automatique), et de nouvelles commandes.

Pour apprendre à utiliser SVN, le manuel de Subversion est disponible sous licence Creative Commons BY.
Tags:
Ajouter des tags (séparés par des virgules ou des espaces) :
 
Attention: tous les caractères spéciaux sont interdits (sauf le .). Les tags n'apparaîtront qu'au prochain rafraichissement du cache (dans plusieurs heures).

<< Mettre à jour >>
:: lien mort :: orthographe :: nouveauté :: mise à jour ::

Vous souhaitez mettre à jour la notice ? La première chose à faire est de déterminer s'il s'agit d'une mise à jour mineure ou d'une mise à jour majeure Icone d'aide.

  • Mineure : un lien mort, des fautes d'orthographe, un lien à ajouter ou encore une petite précision.

    Veuillez renseigner les champs ci dessous :

  • Majeure : une nouvelle version avec des nouveautés, des changements majeurs.

    En cochant cette case, vous allez créer une page sur le wiki afin de mettre à jour la notice.

Commentaires

<< Poster un message >>
:: question :: précision :: avis :: commentaire :: bug ::

Subversion , le 3 juillet 2007 par Beldom (1 rép.)

Bonjour. Je suis actuellement en train d’analyser les possibilités que m’offre SVN afin de savoir s’il peut m’être utile. Or je me retrouve à l’heure actuelle devant un problème : je souhaite créer une version 1.2 par exemple avec des dossiers et des fichiers spécifiques et pas avec tout mon tronc. (Tronc qui en réalité n’existe pas dans ce projet)

Or après lecture de la documentation SVN, de la documentation Tortoise, je ne vois pas comment faire. Autrement qu’une solution assez barbare en ce sens qu’il s’agirait de tout copier puis de supprimer les fichiers non voulus. Mais pour un programme de plus de 600 fichiers, c’est un peu lourd.

Merci d’avance de votre aide !

Subversion , le 11 novembre 2007 par kurgbe

C’est une "erreur" courante de débutants de vouloir copier une partie de leur tronc de peur de gaspiller de l’espace disque. En fait en SVN les fichiers ne sont pas dupliqués mais un lien "dur" est créé entre votre tronc et la version 1.2

C’est un avantage que votre branche/étiquette 1.2 contienne l’entièreté de votre projet. Si par la suite vous devez faire une maintenance de 1.2 il suffira d’en faire une copie locale.

D’autre part si vous voulez créer un projet Y à partir de projet X, il suffit d’exporter le projet X , retirer les fichiers non utiles, ajouter de nouveaux fichiers, .... et puis importer le tout dans SVN.

Finalement si vous voulez créer une nouvelle version de votre projet X (par exemple une variante pour Linux) copiez le tronc complet et dans la nouvelle branche effacer/modifier les fichiers spécifiques à votre nouvelle branche.

Répondre à ce message

Subversion , le 28 février 2007 par amir_pfr (0 rép.)

Bonjour ;

Je souhaite savoir comment labeliser une version (c-a-d l’étiqueter) pour éventuellement récupérer et regénérer une version en Production.

Merci pour votre aide.

abdellah

Répondre à ce message

Subversion pour la gerer les environnement dev / test /prod ? , le 21 avril 2006 par totoprout (0 rép.)

Hello, Un petit message, ou plutôt une question concernant subVersion dont je ne trouve pas de doc complète en français (et la doc anglais fait peur tellement c’est long !).

Est-il possible d’utiliser subVersion, pas seulement pour gérer les version, mais également pour gérer le déploiement dans des environnement de dev / test / validation / production  ?

Merci ...

Répondre à ce message

Install simple d’un serveur Subversion , le 2 avril 2006 par Patrick (3 rép.)

Bonjour,

Pour ceusses que ça intéresse, j’ai écrit une procédure pour l’installation (version simple) d’un serveur subversion sous GNU/linux.

Critiques et corrections acceptées si courtoises :)

-----> Install simple d’un serveur subversion

Install simple d’un serveur Subversion , le 20 juin 2006 par vincent

Bonjour Patrick ou tout autre lecteur d’ailleurs,

Je me permet de poster ici, je ne suis pas arriver à mettre la main sur une e-mail directement, enfin c’est peut être aussi ce que tu voulais...

Voilà, j’ai suivit ton tutoriel ma foi très bin réalisé mais j’ai quelques problèmes. Je susi sur une Mandriva Vmwarisée si ca peut aider. Le premier fut l’inexistance du inetd.conf sur ma machine, mais j’ai réussit à trouver qu’il fallait utiliser xinetd.conf ...(il parait que c’est une histoire d’interface graphique...j’ai pas tout compris..)

bon j’en viens à mon veritable problème. J’ai finit la partie "création du serveur" du tuto. J’essaie d’importer des données dessus mais là, j’ai le message d’erreur : svn : Malformed network data

j’avoue que la séquence : mkdir /svnimport cd /svnimport cp -r path/monprojet . mv monprojet trunk mkdir monprojet mkdir monprojet/branches mkdir monprojet/tags mv trunk monprojet/ ne fonctionne pas chez moi, mais d’ailleurs je ne comprends pas le sens de "cp -r path/monprojet .", j’ai donc opté pour : mkdir svnimport mkdir svnimport/tags mkdir svnimport/branches mkdir svnimport/trunk bon, classique quoi...

après j’ai essayé différentes choses : svn import . svn ://localhost/ —username vincent -m ’Initial import’ svn import . svn ://localhost/ -m ’Initial import’

puis de windows (pas la meme ip) par l’intermediaire de subclispe via eclipse j’ai essayé de me connecté à svn ://192.168.1.16 mais là encore svn : Malformed network data

J’ai lu dans la doc de Subclipse qu’il ne permettait pas de créer des repositories, je me dis donc qu’à la limite, cela est normal, mais à partir de linux, je n’arrive pas à importer...

Sinon, je veux utiliser Subclipse à terme donc je me demande si ce serveur SVN "basique" est suffisant ou si je serai obligé de créer un serveur via apache2 ?

merci d’avance,

vincent

-----> le tuto

Install simple d’un serveur Subversion , le 21 juin 2006 par Patrick

Je me permet de poster ici, je ne suis pas arriver à mettre la main sur une e-mail directement, enfin c’est peut être aussi ce que tu voulais...

En fait, l’adresse est dispo sur la première page du wiki (on y arrive en cliquant sur le titre, en haut à droite) et aussi sur mon nom, qu’on voit sur le commentaire framasoft initial un peu plus haut ;)

j’ai réussit à trouver qu’il fallait utiliser xinetd.conf ...(il parait que c’est une histoire d’interface graphique...j’ai pas tout compris..)

Quelqu’un de plus calé pourrait confirmer, mais il me semble qu’inetd et xinetd sont simplement deux softs différents remplissant le même objectif. xinetd étant plus performant qu’inetd.

j’avoue que la séquence : mkdir /svnimport cd /svnimport cp -r path/monprojet . mv monprojet trunk mkdir monprojet mkdir monprojet/branches mkdir monprojet/tags mv trunk monprojet/ ne fonctionne pas chez moi, mais d’ailleurs je ne comprends pas le sens de "cp -r path/monprojet ."

Ok, j’ai ajouté quelques explications sur la page du tuto. Je partais de l’idée qu’un répertoire contenant un bout du projet existait déjà quelque part. J’utilise subversion quand j’ai déjà quelque chose à mettre dedans, quoi.

là encore svn : Malformed network data

Je suis bien embeté, et ne sais pas te répondre. Désolé. Je ne suis pas particulièrement spécialiste de subversion, malheureusement. Faudrait voir si le xinetd est bien configuré, s’il n’y a pas de problèmes de droits d’accès (je sais que la Mandrake met des ACL un peu partout), voir les fichiers de logs (/var/log habituellement). Tout ça :/

Sinon, je veux utiliser Subclipse à terme donc je me demande si ce serveur SVN "basique" est suffisant ou si je serai obligé de créer un serveur via apache2 ?

Je ne pense pas que l’install basique pose problème à subclipse. Mais bon, encore une fois, je ne suis pas spécialiste.

Bon courage, et tiens nous au courant pour ce problème de "Malformed data"

Install simple d’un serveur Subversion , le 22 juin 2006 par vincent

après 1 changement de dique dur pour surchauffe, j’ai repris à zéro directement sur une autre amchine (en fait, j’ai l’impression que quelq’un a déjà essayé de faire tourner un svn sur la machine, il y avait des choses paramaitrés à moitié un peu partout...)

bon, première chose : ca marche !

Sinon, tout ne marche pas, je m’explique : je n’est pas l’impression que la ligne de code dans le xinetd.conf lance le serveur svn, enfin disons que quand je fais ps, je ne vois rien...

par contre si je lance directement la commande svnserve -i, j’arrive a lancer quelques chose...

J’ajouterai, mais je ne sais pas si ca aurat été décisif, que j’ai ajouté deux lignes dans /etc/services :

svn 3690/tcp # Subversion svn 3690/udp # Subversion

de pus, j’ai cru comprendre que le 2eme svn dans la ligne de commande :

svn stream tcp nowait svn /usr/bin/svnserve -i -r /usr/local/svn se refere à un utilisateur ! donc ca ne pouvait pas marcher, je me suis fais refusé la connection maintes fois parce que je n’avais pas les droits.... Je pense qu’à ce sujet là ton tuto est imparfait. (j’ai trouvé ca sur : http://svnbook.red-bean.com/nightly/en/svn-book.html )

pour l’instant je suis obligé de tapper le chemin complet pour import et commit mais en lancant le serveur avec -r ca devrait passer, je testerai ca demain.

Pour les malformed data...et ben aucune idée, il y a des choses qui restent mysterieuses en informatique...

sinon je te conseille de précieser que les lignes de commandes dans svnserve.cofn et passwd doivent être coller à gauche...sinon ca amrche pas...c’est bête un ordi des fois...

En tout cas merci de ton tuto et ton aide, je reposterai si je trouve d’autre trucs (ou quand ca marchera bien...)

vincent

Répondre à ce message

un exemple d’utilisation de subversion , le 27 mars 2006 par eratio (0 rép.)

pour voir à quoi cela ressemble. voici un exemple avec la communauté SPIP qui utilise subversion pour développer son logiciel et tous ses extras http://zone.spip.org/trac/spip-zone/browser/_contribs_

Répondre à ce message

Subversion : turtoisesvn , le 26 mars 2006 par Emm (0 rép.)

Cela va faire 2 ans que j’utilisev SVN et 1 an de turtoise svn ... que dire ... je ne peux plus m’en passer, simple d’utilisation, fonctionnel, ... je n’envisage plus de projet sans ...

pour ceux qui ont utilisé CVS, passer à subversion ... apres un temps d’adaptation tres court, CVS paraitra etre sortie de la prehistoire ....

Emm

Répondre à ce message

il manque les mots de pied de page ([1]...) , le 25 mars 2006 par nopper (3 rép.)

Les mots cités en pied de pages ont disparus de l’article. Seule les références vers leur définition est présente dans le texte.

Sinon, bon article. Je connaissais seulement un peu CVS, je vais peut-être me pencher sur Subversion..

il manque les mots de pied de page ([1]...) , le 25 mars 2006 par Léviathan

oups ! merci de la remarque, je devais pas être bien réveillé en mettant en ligne .

Léviathan

il manque les mots de pied de page ([1]...) , le 25 mars 2006 par Omnisilver

Toujours dans la mise en forme, la liste ne fonctionne pas.

Pour rappel pour une liste à puce sous SPIP c’est comme ça :

-*


 
 

il manque les mots de pied de page ([1]...) , le 27 mars 2006 par Léviathan

eh bien, j’aurais eu du mal pour cette notice. Merci de ta remarque.

Cordialement,
Léviathan

Répondre à ce message

Informations complémentaires

Faire un don ? (défiscalisé)

Faire un DON

Aidez-nous à atteindre notre objectif de 800 donateurs récurrents pour assurer notre pérennité et notre développement ! (nous n’y sommes plus très loin).

Je soutiens Framasoft pour 10€/mois

Autres logiciels

Framasoft needs you !

 Vous trouverez ici une liste de logiciels qui ont fait acte de candidature et qui n’attendent que vous pour réussir avec brio l’examen d’entrée dans notre annuaire.

Informations générales

Juste une image

Nick Nick
Creative Commons BY

Sur Framabook.org

Atelier Drupal 7
« Atelier Drupal 7 » par Cyprien ROUDET.
Option Libre
« Option Libre. Du bon usage des licences libres » par Benjamin Jean.

Tous nos Framabooks