Les outils de ver­sion­ning ont pour mission de modifier des documents voire des fichiers. Ils sau­ve­gar­dent dans une archive toutes les versions créées com­pre­nant les ho­ro­da­tages ainsi que les iden­ti­fiants uniques, de sorte que les anciennes données peuvent à tout moment être chargées voire res­tau­rées. Par con­sé­quent, le but est de dé­ter­mi­ner l’identité de l’uti­li­sa­teur qui a procédé à des mo­di­fi­ca­tions à un moment T. Les objectifs d’un tel système sont, d’un côté, de coor­don­ner l’accès commun de plusieurs uti­li­sa­teurs à des fichiers et, de l’autre, de permettre le dé­ve­lop­pe­ment simultané de plusieurs branches (celle du dé­ve­lop­pe­ment ou bien du dé­ta­che­ment). En règle générale, les systèmes de ver­sion­ning in­ter­vien­nent dans le dé­ve­lop­pe­ment de logiciels et dans les systèmes de gestion de contenus dans le cadre pro­fes­sion­nel. On compte, dans les outils de ver­sion­ning les plus connus, Apache Sub­ver­sion (SVN) mais également Git. Il est possible de les installer soit sur son propre serveur soit de les louer via un hébergeur. GitHub est le service d’hé­ber­ge­ment basé sur le web le plus connu pour les projets Git. En ce qui concerne Sub­ver­sion, on peut citer le site RiouxSVN. Les services tels que Sour­ce­Forge hébergent les deux systèmes.

SVN : le suc­ces­seur CVS de CollabNet

C’est au début des années 2000 que le logiciel libre Sub­ver­sion a commencé son dé­ve­lop­pe­ment pour enfin sortir sa version complète quatre années plus tard. C’est ainsi que DVN a succédé à son modèle CVS (sigle de Con­cur­rent Versions System). En 2009, le projet a changé pour la Apache sofware Foun­da­tion, d’où provient le nom du fameux outil Apache Sub­ver­sion.

SVN repose sur un système de ver­sion­ning cen­tra­lisé. Cela signifie qu’un seul ré­per­toire général existe et tous les uti­li­sa­teurs y ont accès. Etant donné que les mo­di­fi­ca­tions ne peuvent être fu­sion­nées, le système empêche que deux uti­li­sa­teurs modifient un même fichier si­mul­ta­né­ment. Ce dernier est attribué au premier in­ter­naute qui l’ouvre et il reste protégé des autres uti­li­sa­teurs tant qu’il n’a pas été fermé. Apache Sub­ver­sion permet également de charger et de modifier les sous-chemins in­dé­pen­dam­ment du reste de l’ar­bo­res­cence. C’est ainsi que les droits de lecture et d’écriture sont affectés pour la totalité des chemins aux dif­fé­rents uti­li­sa­teurs. En outre, Suversion se ca­rac­té­rise par le fait que des ré­per­toires vides, renommés voire déplacés peuvent être en­re­gis­trés sans causer de perte dans l’his­to­rique.

Git : la solution d’urgence du dé­ve­lop­peur du noyau Linux

Le créateur de Linux Linus Thorvalds a commencé le dé­ve­lop­pe­ment d’un nouveau logiciel de ver­sion­ning en avril 2005. Il y était plus ou moins forcé. La raison de ce re­bon­dis­se­ment était que les dé­ve­lop­peurs du noyau Linux avaient perdu leur accès gratuit du fait d’une mo­di­fi­ca­tion de la licence du système BitKeeper. Le nouveau système avait pour but de présenter les même flux de travail que BitKeeper et de protéger contre les mo­di­fi­ca­tions dé­li­bé­rées ou ac­ci­den­telles. Par ailleurs, son ef­fi­ca­cité était bien su­pé­rieure. C’est seulement après seulement quelques jours que Thorvalds pré­sen­tait la première version de Git.

Derrière Git se cache un système de ver­sion­ning dé­cen­tra­lisé. Il existe un dépôt (de l’anglais re­po­si­tory) dans lequel tous les chan­ge­ments sont in­cor­po­rés et qui permet aux uti­li­sa­teurs d’y té­lé­char­ger leurs propres copies de travail. Ils disposent également d’un dépôt complet qui comprend l’his­to­rique local sans qu’ils n’aient besoin d’une connexion per­ma­nente au réseau. Par ailleurs, les mo­di­fi­ca­tions sont trans­fé­rées ra­pi­de­ment dans le dépôt principal. En con­sé­quence, Git ne propose pas de système de ver­rouil­lage mais permet à tous les uti­li­sa­teurs de créer leurs propres branches qui seront ensuite té­lé­char­gées dans le dépôt principal. Chaque uti­li­sa­teur dispose par ailleurs des droits de lecture et d’écriture standards pour tout le ré­per­toire. S’il existe d’autres droits, d’autres ré­per­toires prin­ci­paux doivent alors être définis. Chaque copie de travail est une sau­ve­garde in­di­vi­duelle du ré­per­toire principal, ce qui présente un avantage au cas où celui-ci tombe en panne ou est abîmé. Git ne définit que les contenus des ré­per­toires, c’est pourquoi les ré­per­toires vides sont au­to­ma­ti­que­ment supprimés.

SVN et Git : com­pa­rai­son directe des systèmes

Quel outil faut-il choisir entre SVN et Git ? La réponse n’est pas aussi simple et reste liée à vos objectifs. Les deux systèmes se dis­tin­guent de par leurs struc­tures et leurs pro­cé­dures de travail. Le tableau suivant illustre les op­po­si­tions majeures qui existent entre les deux outils :

SVNGit
Ver­sion­ningCen­tra­liséDé­cen­tra­lisé
DépôtUn dépôt central dans lequel les copies de travail sont créées Des copies de dépôt, présentes lo­ca­le­ment, dans les­quelles il est possible de tra­vail­ler
Droit d’accèsBasé sur le cheminPour le ré­per­toire complet
Suivi des mo­di­fi­ca­tionsEn­re­gistre des donnéesEn­re­gistre des données
Journal de mo­di­fi­ca­tions des donnéesComplet seulement dans le dépôt. Les copies de travail ne con­tien­nent que la version la plus récente.Le dépôt et les copies de travail con­tien­nent l’his­to­rique complet.
Con­nec­ti­vité au réseauPour tous les accèsNé­ces­saire seulement pour réaliser une syn­chro­ni­sa­tion

Voici les avantages res­pec­tifs des deux systèmes :

Il se peut que Git vous cor­res­ponde mieux si vous…

  • Ÿn’avez pas besoin d’une con­nec­ti­vité au réseau de manière continue par exemple pour pouvoir tra­vail­ler sur votre projet de n’importe où ;
  • Ÿvoulez être protégé en cas de panne ou de perte du dépôt principal ;
  • Ÿn’avez besoin en aucun cas de droits de lecture ou d’écriture pour des ré­per­toires par­ti­cu­liers (il est tout de même possible avec Git, quoique compliqué, de con­fi­gu­rer ces accès) ;
  • Ÿattachez beaucoup d’im­por­tance au transfert rapide des mo­di­fi­ca­tions.

Mais Sub­ver­sion peut se révéler être une meilleure option si vous…

  • Ÿavez besoin de droits d’accès basés sur des chemins pour chaque domaine de votre projet ;
  • Ÿdésirez regrouper tout votre travail dans un endroit cen­tra­lisé ;
  • Ÿtra­vail­lez avec beaucoup de fichiers binaires ;
  • Ÿdésirez en­re­gis­trer com­plè­te­ment les struc­tures des ré­per­toires vides (Git n’autorise pas cette action étant donné qu’il ne possède aucun contenu).

Si les ca­rac­té­ris­tiques énumérées ci-dessus ne sont pas per­ti­nentes pour votre projet, nous vous con­seil­lons de procéder à un test des deux outils de ver­sion­ning. Quoi qu’il en soit, GitHub est le premier four­nis­seur d’hé­ber­ge­ment et il est soutenu par une grande com­mu­nauté d’uti­li­sa­teurs ce qui forme en soi un avantage majeur.

Aller au menu principal