Aller au menu - Aller au contenu

SVN 1.5 se montre au grand public

Revenir à la liste des news
Participer à la discussion

Informations

Contributeur(s) : bluestorm, Craw et wgmpgp
Publié : le 13/07/2008 à 17:04:07
Catégorie : Logiciel
Visualisations : 16

SVN 1.5 se montre au grand public

Subversion (SVN) est un logiciel libre de gestion de versions : c'est un programme permettant à plusieurs personnes de travailler sur des documents placés sur un serveur en commun, en gérant les modifications et sauvegardant l'historique du projet. Ces logiciels sont surtout utilisés pour la conception collaborative de logiciels, quand une équipe de plusieurs programmeurs (mais aussi artistes, etc.) a besoin de mettre son travail en commun et de suivre les modifications de tous les participants.
SVN (que nous dénommerons ainsi dans la suite de cette news) est un des logiciels majeurs dans ce secteur, et une nouvelle version majeure, la 1.5, est sortie il y a deux semaines.

Quelques connaissances dans le domaine…



Image utilisateur

L'histoire de SVN



Historiquement, le logiciel de gestion de versions utilisé par la plupart des projets libres est CVS (Concurrent Versions System). Créé dans les années 80, il a rendu de bons et loyaux services à de nombreux projets, mais son âge commençait à se montrer. SVN, lancé en février 2000 par CollabNet, une entreprise californienne, s'est constitué comme un remplaçant de CVS de nouvelle génération, en essayant d'en reprendre les principes et d'assurer une certaine compatibilité, tout en résolvant certains défauts et apportant de nouvelles fonctionnalités.



Comment fonctionne un système de gestion de versions ?



Pour comprendre la raison du passage de CVS à SVN, il faut tout d'abord comprendre un peu mieux leur fonctionnement.

Tout d'abord, l'utilisation de SVN n'est possible que si toutes les personnes du projet installent un programme supplémentaire, appelé un client SVN. Ce client se connectera au serveur commun et échangera des informations avec lui. Sous Windows, on peut par exemple utiliser le très connu Tortoise SVN. Il vous permettra en quelques clics de gérer à distance votre projet.

Subversion remplit en fait toutes les fonctions de base pour permettre aux utilisateurs de gérer un projet à plusieurs. On peut par exemple citer les suivantes :

  • Le checkout : c'est une des fonctions primordiales de SVN. Il va créer un dossier contenant les fichiers du projet, et conserve des informations supplémentaires telles que la version des fichiers, pour pouvoir ensuite mettre à jour le projet de manière très rapide. Ce checkout est nécessaire lorsque l'on commence à travailler sur un projet.
  • Le commit : lorsque quelqu'un modifie un fichier du projet, la modification n'est en fait effectuée qu'en local, sur l'ordinateur du développeur. Pour la rendre publique et visible de tous, le développeur doit effectuer un commit qui enverra tous les nouveaux fichiers sur le serveur.
  • L'update : c'est un peu l'opération inverse du commit : lorsqu'un commit a été réalisé, les autres développeurs doivent effectuer une update (mise à jour en français) pour récupérer les nouvelles versions de tous les fichiers.


Les logiciels comme Tortoise SVN simplifient grandement ces tâches. Sans eux, vous pourriez également passer par la ligne de commande pour réaliser ces fonctions (par le biais de svn checkout, svn commit ou svn update, rien de compliqué de ce côté ;) ). Le tutoriel de Dalshim sur Subversion vous expliquera toutes ces subtilités plus en détail :) .

Pour finir, signalons quand même qu'à la différence de systèmes de gestion de versions que l'on peut qualifier de décentralisés, Subversion nécessite un serveur pour fonctionner correctement, et ne permet ainsi pas de développer sans connexion internet, même s'il est tout de même possible d'utiliser son propre ordinateur comme serveur.


Tortoise SVN

L'interface de Tortoise SVN, un client Subversion très utilisé



Un changement donc justifié



SVN corrige en fait de nombreux problèmes présents dans CVS : par exemple, les commit atomiques n'étaient pas supportés, ce qui obligeait ainsi à diviser un ensemble de commits en plusieurs plus petits commits et faisant ainsi perdre un temps précieux au développeur.

Une autre fonctionnalité manquante de CVS était la possibilité de renommer ou de déplacer des fichiers tout en gardant l'historique des modifications de ces fichiers. Ainsi, tout renommage d'un fichier impliquait la perte de son historique. SVN permet maintenant cela d'une manière très facile, avec la commande svn mv [source] [destination] :) .

SVN ajoute aussi une gestion basique des droits sur les fichiers, permettant ainsi de contrôler qui peut modifier certains répertoires, via des groupes d'utilisateurs. Cela n'était pas possible avec CVS : une personne ayant accès en écriture au projet l'avait sur tous les fichiers du projet.

Les nouveautés de SVN 1.5



De nombreux bugs corrigés



Plus de 150 erreurs qui ont étés corrigées dans cette nouvelle mouture de Subversion. Cette correction massive de bugs permet une utilisation plus confortable de Subversion au quotidien : en effet, il est plutôt désagréable de voir son client SVN planter pendant un très long checkout :p .

De nouvelles fonctionnalités



En plus de ces nombreux bugs corrigés, SVN 1.5 apporte de nombreuses nouveautés au niveau des fonctionnalités. On peut par exemple citer les suivantes :
  • La gestion des copies et déplacements de fichiers ont été totalement revues et améliorées : en effet, lorsque une copie de fichier était effectuée sur le serveur via svn move puis svn commit, le comportement adopté par les précédentes versions de Subversion était le suivant : tout d'abord, on envoyait un tout nouveau fichier ayant le contenu de l'ancien fichier, puis on supprimait l'ancien fichier. Ce comportement était plus que lent avec de très gros fichiers (obligation de retélécharger le fichier en entier). Cela est maintenant remplacé dans SVN 1.5 par un déplacement direct du fichier sur l'ordinateur du développeur.
  • SVN est beaucoup plus réactif lorsque l'on veut annuler une action en cours : il fallait parfois plus de 5 secondes dans les versions précédentes pour que SVN stoppe l'action en cours.
  • Le programme a été intégralement optimisé et est ainsi plus rapide à l'exécution que dans les précédentes moutures.
  • Le sparse checkout fait son apparition et permet ainsi de récupérer uniquement une partie du projet, et pas l'intégralité. Cela était laborieusement faisable avec les précédentes versions, mais peut maintenant être réalisé très rapidement.
  • Le merge tracking permet de rendre compte de la fusion de deux branches du projet. Pour information, une branche est une version à part du projet qui permet de travailler localement sur le code, sans que les modifications affectent immédiatement les autres branches. On peut ainsi y faire des tests de nouvelles fonctionnalités expérimentales. Quand on veut intégrer ces fonctionnalités dans la branche principale (celle qui est distribuée aux utilisateurs), on réalise ce que l'on appelle une fusion de branches (ou merge en anglais), fusionnant deux branches en une seule. Avant, c'était réalisé via des déplacements de fichiers ou des patches, ce qui rendait l'opération très délicate. Cela est maintenant faisable automatiquement via la commande svn merge.


Du nouveau également du côté de Tortoise SVN



L'équipe de développement de Tortoise SVN a profité de la sortie de SVN 1.5 pour sortir leur nouvelle version de Tortoise SVN, la version 1.5.0.

Plusieurs améliorations sont au rendez-vous, dont notamment une révision de l'interface graphique permettant un plus grand confort de lecture, et l'utilisation de plusieurs nouvelles icônes s'affichant notamment sur les dossiers du projet.

Conclusion



Nous avons fait le tour des principales nouveautés de cette version de SVN, mais également de celles de la nouvelle version de Tortoise SVN. Pour plus d'informations, et pour une liste exhaustive des améliorations, je vous conseille de vous référer au ChangeLog de SVN 1.5.

SVN 1.5 est téléchargeable depuis le site officiel de Subversion :



En conclusion, Subversion 1.5 apporte de nombreuses nouveautés comblant les manques des précédentes versions, et corrigeant des bugs importants et gênants pour l'utilisateur. Des fonctionnalités comme le merge tracking n'annoncent que du bon pour l'avenir de SVN et sur les prochaines versions à venir.

Merci à vincent1870 pour la relecture. ;)

47 Participations

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page Précédente  1  2 
Pseudo Discussion
3 visiteurs sur cette news (0 membre et 3 anonymes)
Page Précédente  1  2 
Hors ligne Craw # Posté le 15/07/2008 à 16:08:23
Rien n'est parfait !
Avatar
Modérateurs

bluestorm >> Bah moi j'utilise SVN et pourtant je développe un jeu dans un langage pas louche (genre le C++). ^^
Hors ligne noluz # Posté le 15/07/2008 à 16:15:45

"pas louche", "C++". Antithèse ?
Hors ligne wgmpgp # Posté le 15/07/2008 à 21:49:56
Rotoclap true fan
Avatar
Groupe : Bannis

Études : EPITA

Citation : Craw
bluestorm >> Bah moi j'utilise SVN et pourtant je développe un jeu dans un langage pas louche (genre le C++). ^^

Ouais, et t'as choisis SVN car tu connais pas les alternatives, ce qui recoupe exactement avec ce que moi et bluestorm avons dit dans nos deux messages.
 
Hors ligne Craw # Posté le 15/07/2008 à 22:22:59
Rien n'est parfait !
Avatar
Modérateurs

Non à vrai dire je ne connaissais même pas SVN donc...
Hors ligne lerat # Posté le 16/07/2008 à 19:57:34
Fiero di essere italiano
Avatar

Pour de petit projet, SVN remplit parfaitement sa tâche. Et même sur d'assez gros projet (KDE par exemple [1]).
Maintenant pour un gros projet, si on veut être optimal, oui git a l'air plus adapté. ;)

----------------------------------

[1] : même s'il me semble avoir lu que KDE voudrait passer à git ...

C'est pas l'homme qui prend la bière, c'est la bièr' qui prend l'homme. Moi, la bière, elle m'a pris, je m'souviens, à l'unif.

 
Hors ligne wgmpgp # Posté le 16/07/2008 à 21:30:55
Rotoclap true fan
Avatar
Groupe : Bannis

Études : EPITA

En même temps, dans la famille des DVCS, il n'y a pas que Git. Mercurial est aussi très utilisé du fait de sa portabilité (et oui, Git sous windows ça n'existe pas), notamment par la fondation Mozilla. Il est écrit en Python et s'interface ainsi très facilement avec d'autres applications, et propose des fonctionnalités très avancées au niveau de la gestion des branches.
 
Hors ligne noluz # Posté le 17/07/2008 à 08:37:27

Qui s'intéresse aux gens développant sous Windows... ?

lerat : justement, je trouve que pour un petit projet SVN est trop lourd et pour un gros projet pas pratique :-° .
Hors ligne wgmpgp # Posté le 17/07/2008 à 17:54:54
Rotoclap true fan
Avatar
Groupe : Bannis

Études : EPITA

Pareil, le fait de pouvoir développer sans serveurs (et file:// de SVN ça compte pas, c'est tout aussi moche), c'est très pratique pour des petits projets. Je me met à versionner tout et n'importe quoi quand je programme, ça aurait probablement été plus dur avec SVN qu'avec Mercurial.
 
Hors ligne lerat # Posté le 17/07/2008 à 17:58:09
Fiero di essere italiano
Avatar

Zulon, "est trop lourd", tu veux dire quoi par là ? Car SVN a l'air assez simple à mettre en place, assez simple à gérer, et fort utile ... Donc toute les conditions sont là pour qu'un petit projet l'utilise. Concernant Git ou autre décentralisé, ça parait plus compliqué. Et quand on a un petit projet, on a pas trop envie de se prendre la tête sur ça, il y a d'autre préoccupation.

Maintenant, moi j'utilise ni svn ni git ni autre. Donc j'en sais trop rien, c'est juste des impressions.

C'est pas l'homme qui prend la bière, c'est la bièr' qui prend l'homme. Moi, la bière, elle m'a pris, je m'souviens, à l'unif.

 
Hors ligne Dalshim # Posté le 17/07/2008 à 18:07:25
Avatar

Ville : Paris
Pays : France métropolitaine
Études : INSA Lyon

J'avoue ne pas très bien comprendre non plus en quoi SVN est lourd.
En ce moment, en stage, j'ai la chance je dois utiliser clearcase....
Ça c'est lourd. Très très complet, mais très très lourd ! Il faut un formation pour utiliser correctement un outil comme celui là.

SVN en revanche, je ne trouve pas que la formation sois longue à acquérir pour un petit projet (pas de branch, et encore, même avec ça va).
 
Hors ligne gouttegd # Posté le 17/07/2008 à 18:36:13
Serenity is a RAID 1 array.
Avatar

Citation : wgmpgp
Pareil, le fait de pouvoir développer sans serveurs (et file:// de SVN ça compte pas, c'est tout aussi moche), c'est très pratique pour des petits projets. Je me met à versionner tout et n'importe quoi quand je programme, ça aurait probablement été plus dur avec SVN qu'avec Mercurial.

Je ne connais pas Mercurial (enfin, je sais ce que c'est, mais je veux dire que je ne l'ai jamais utilisé), mais j'utilise abondamment Subversion pour, moi aussi, « versionner » tout un tas de petits trucs (code, documents LaTeX, configs, etc.), et ce n'est ni particulièrement dur ni particulièrement lourd (du moins je n'ai rien ressenti de tel).

Et pour un projet vraiment petit sur lequel tu es le seul à travailler, rien ne t'empêche de faire tourner un serveur Subversion directement sur ton poste. Ce n'est jamais qu'une ligne en plus dans un script de démarrage. ;)

« Je vous aiderai si vous me promettez d'aider quelqu'un d'autre en retour. » --- Anonyme
« Soyez vigilant lorsque vous vous exprimez dans un forum électronique. Vos fautes de frappes et de syntaxe vous poursuivront pour l'éternité. » --- Linus B. Torvalds

De la gestion automatique des dépendances...
 
Hors ligne noluz # Posté le 18/07/2008 à 08:26:03

Pour versionner des fichiers indépendants (ou pas) les uns des autres, un truc comme RCS est plus approprié (et interfacé avec Emacs, mais je crois me souvenir que tu es vimiste, il y a sûrement des interfaces aussi). C'est bien plus léger (il y a quoi, quatre commande, cinq) et tout aussi efficace pour un fichier seul.
Hors ligne gouttegd # Posté le 18/07/2008 à 10:08:14
Serenity is a RAID 1 array.
Avatar

RCS ? Non merci, j'avais essayé (au siècle dernier, je crois), c'est peut-être « léger » mais je n'ai pas du tout accroché (pas plus qu'à CVS d'ailleurs). :p

« Je vous aiderai si vous me promettez d'aider quelqu'un d'autre en retour. » --- Anonyme
« Soyez vigilant lorsque vous vous exprimez dans un forum électronique. Vos fautes de frappes et de syntaxe vous poursuivront pour l'éternité. » --- Linus B. Torvalds

De la gestion automatique des dépendances...
 
Hors ligne noluz # Posté le 18/07/2008 à 10:16:52

Bah c'est sûr qu'en ligne de commande c'est pas pratique du tout :p , mais s'il existe une interface pour ton éditeur c'est plutôt cool à utiliser (mais vu que je ne connais plus du tout vim, je ne peux pas t'aider davantage :/ ).
Hors ligne gouttegd # Posté le 18/07/2008 à 10:44:19
Serenity is a RAID 1 array.
Avatar

Ah mais c'est pas le fait que ça s'utilise en ligne de commande qui me dérange, c'est juste que... je sais pas, j'ai pas accroché, c'est tout. Pas assez pratique pour moi.

Quant à l'utilisation depuis vim, oui je crois que c'est possible, mais je n'ai jamais cherché de ce côté. L'invocation directe depuis le shell me convient très bien.

« Je vous aiderai si vous me promettez d'aider quelqu'un d'autre en retour. » --- Anonyme
« Soyez vigilant lorsque vous vous exprimez dans un forum électronique. Vos fautes de frappes et de syntaxe vous poursuivront pour l'éternité. » --- Linus B. Torvalds

De la gestion automatique des dépendances...
 
Hors ligne noluz # Posté le 18/07/2008 à 10:50:59

Bah quand on a un seul fichier, commencer à faire une configuration lourde comme celle de SVN (ou même Git ou whatever) est compliqué, tandis que RCS s'utilise très facilement (mais dès que le truc devient plus gros qu'un fichier, ça tient pas la route).
Hors ligne gouttegd # Posté le 18/07/2008 à 13:59:57
Serenity is a RAID 1 array.
Avatar

Pour un fichier, peut-être, mais je maintiens que ce n'est pas si lourd que ça.

Si tu utilises déjà SVN, tu as donc déjà un serveur qui tourne (en local sur ta machine ou sur un serveur auquel tu as accès), donc tout ce que tu as à faire c'est de créer un nouveau repository (ce qui se fait en une commande).

En revanche, si tu n'utilises pas déjà Subversion pour autre chose, alors je suis tout-à-fait d'accord que mettre en branle un serveur SVN pour deux ou trois malheureux fichiers est certainement exagéré. :)

« Je vous aiderai si vous me promettez d'aider quelqu'un d'autre en retour. » --- Anonyme
« Soyez vigilant lorsque vous vous exprimez dans un forum électronique. Vos fautes de frappes et de syntaxe vous poursuivront pour l'éternité. » --- Linus B. Torvalds

De la gestion automatique des dépendances...
 
Pour accéder à cette section
Connectez-vous !
connexion_rpx

Revenir à la liste des news