el muchacho Comfortably Numb | Voici une petite comparaison entre Subversion et Arch, les deux acteurs majeurs de la gestion de configuration (Software Configuration Management, SCM) dans le domaine du libre, à partir des informations glanées sur le net.
Il en existe au moins deux autres intéressants, à savoir Monotone et aussi DARCS, chacun avec leurs avantages et leurs inconvénients. Ces deux programmes ne se composent que d'un simple exécutable, bien qu'ils semblent cacher une grande puissance sous cette apparente simplicité. Mais par manque d'information sur ces deux derniers produits et/ou parce qu'ils ne sont pas encore parvenus à pleine maturité, je me pencherai sur les deux premiers.
Arch et Subversion sont aujourd'hui deux produits matures utilisés par de nombreux projets en open source d'envergure et des compagnies privées. Ils sont tous deux technologiquement très supérieurs à CVS, dont l'impossibilité de renommer fichiers et répertoires sans perdre l'historique est une tare extrêmement gênante pour un projet industriel de taille moyenne. (Je signale en passant que l'interface graphique de ClearCase est boguée et pose ce même problème, qui peut faire perdre bcp de temps. Il faut passer par la commande cleartool move pour pouvoir renommer un fichier/répertoire sous ClearCase.)
----
Subversion est développé sous licence BSD par des mainteneurs de CVS, avec l'ambition d'en être le successeur et remplaçant direct. Il reprend donc la philosophie et le jeu de commandes de CVS, tout en palliant à la plupart de ses défauts. Avantages : - les commit sont atomiques,
- la hiérarchie des fichiers est versionnée (comme dans ClearCase par ex.) --> pas de problème de renommage de répertoires et/ou fichiers. On peut y attacher des méta-informations.
- peut fonctionner comme module Apache à travers le réseau internet ou via un serveur dédié svnserver. Toutes les opérations sont sécurisées.
- plus rapide et moins gourmand que CVS, en particulier pour les binaires.
- un outil permet d'importer un repository CVS directement dans subversion.
- traditionnel. Les habitués de CVS ne seront pas dépaysés.
- il existe déjà des interfaces graphiques qui facilitent l'utilisation de svn au quotidien, comme TortoiseSVN sous Windows.
- la documentation est très complète et le support a l'air bon. Une API permet d'interfacer ses propres outils.
Inconvénients : - essentiellement, l'absence de fusion (merge) qui tient compte de l'historique. Pour les utilisateurs de CVS, ça ne changera rien, CVS n'ayant pas cette capacité non plus. Pour les utilisateurs de ClearCase, Perforce ou d'autres produits commerciaux qui ravaillent sur plusieurs branches parallèles, par contre, c'est une lacune majeure, tant cette fonctionnalité facilite les opérations de fusion. Nombre de merges continueront donc de se faire manuellement, avec tous les risques d'erreur que cela comporte. Bien que cette fonctionnalité soit prévue sur le long terme, elle est complexe à implémenter et n'est pas encore programmée pour Subversion.
- pas de lock exclusif des fichiers, mais cette fonctionnalité étant prioritaire sur la liste des développements, elle devrait appraître dans une prochaine version (une 1.2 ?).
- pas de fusion possible entre bases (repositories).
- installation du serveur relativement complexe.
- nombreux s'inquiètent du fait que les données sont stockées dans une base BerkeleyDB. En pratique, il ne semble pas que ça pose de réel problème, sachant que je n'ai lu nulle part qu'il n'y ait jamais eu la moindre perte de données, et ce même sur des projets de plus de 140 développeurs. Il est possible de dumper l'ensemble d'une version sous forme d'un fichier aisément parsable automatiquement. Donc is suffit de forcer un tel dump régulièrement (toutes les nuits par exemple) pour sauvegarde.
Au final, Subversion semble avoir tenu toutes ses promesses, qui sont celles d'un système de gestion de configuration destiné à remplacer CVS. Subversion ne rpétend pas révolutionner le monde des SCM, mais il est souple, fiable et puissant, et peut gérer des projets complexes. Multiplateforme et doté d'interfaces graphiques évoluées, il ne lui manque que la fusion avec historique pour se hisser au niveau des meilleurs produits commerciaux.
----
Gnu Arch est développé sous licence GPL principalement par Tom Lord. La philosophie de Arch diffère fortement de celle de systèmes de gestion de configuration plus traditionnels comme Subversion, du fait qu'il ne gère non pas des versions de fichiers et de hiérarchies de fichiers, mais des "changesets". Les changesets sont assimilables à des patchs sur l'arborescence des fichiers. D'ailleurs les commandes s'appellent mkpatch, dopatch... Conceptuellement, c'est très intéressant, parce qu'une modification du code d'un projet (un nouveau développement ou une correction par exemple) impacte généralement plusieurs fichiers en même temps. L'ensemble de ces modifications constitue un changeset. Un changeset, qui est une révision dans Arch, correspond donc plus à la pose d'un label dans les SCM traditionnels. Comme tous les changesets sont enregistrés, l'un des avantages de ce système est qu'il est très facile de revenir à des versions précédentes du projet. D'autre part, on ne compare plus des versions de fichiers, mais des changesets. Il est possible de repartir d'une version antérieure de la hiérarchie et d'appliquer automatiquement les changesets qui séparent deux révisions du projet. Pour peu que l'on ait bien séparé les corrections de bogues des nouveaux développements, il est ainsi plus facile de reporter les modifications entre branches parallèles.
Autre avantage non négligeable d'Arch: le fait que ce soit une base décentralisée. Cela signifie qu'il est possible de récupérer en local une branche de quelqu'un d'autre, de travailler dessus alors qu'on est déconnecté du réseau (et checkiner les modifs), et plus tard, la personne pourra récupérer ces modifs sans problème. C'est très utile lorsque deux équipes travaillent en parallèle sur des parties de code communes sans être sur le même réseau, ce qui arrive parfois. J'ai eu à affronter ce problème récemment avec ClearCase, et j'ai dû récupérer des modifs via disquette et patcher le code à la main...
Du point de vue de la sécurité, ce système est intéressant car la base est redondante. Vienne un disque dur à rendre l'âme, on peut récupérer toute l'archive à partir du PC d'un autre développeur. Par contre, les modifs complexes non "commitées" ont p-ê tendance à rester plus longtemps en local.
Avantages :
- les commit sont atomiques
- la fusion avec historique est gérée.
- la base étant décentralisée, possibilité de travailler tout en étant déconnecté du réseau, les changesets étant appliqués à posteriori.
- capable de gérer efficacement des situations complexes
- import de bases CVS possible (via cscvs)
- les versions sont stockés sous forme de tarballs.
Inconvénients :
- l'inconvénient principal : ne fonctionne que sur les systèmes Posix. Windows semble exclu d'emblée et l'auteur ne parait pas pressé de s'en soucier. C'est un problème majeur qui fait que l'utilisation d'Arch se limite au monde Unix.
- jeu de commandes complètement différent de CVS.
- prise en main plus complexe que subversion, et peu d'outil graphique à disposition (Octopy sous KDE).
- performances un peu en retrait
- Arch impose ses conventions sur les noms de fichiers. Pour un nouveau projet, c'est une habitude à prendre, mais pour un projet en cours, c'est rédhibitoire.
- documentation encore un peu à la traine(mais suffisante pour débuter)
Comme on le voit, les idées derrière Arch sont assez originales dans le monde des SCM (quoique darcs va encore plus loin). Tous ces avantages me paraissent conférer à Arch une puissance comparable à celle d'un ClearCase, tout en étant bcp plus simple à administrer (et évidemment infiniment moins cher). Malheureusement, Arch se cantonne pour l'instant au monde Unix, et souffre d'un manque de support par des outils graphiques externes (mais il est facile, comme tout SCM, de l'intégrer à Emacs par exemple).
Je pense que c'est le meilleur choix dans un réseau exclusivement Unix, spécialement sur des projets d'importance. Si le réseau est hétérogène, subversion est la bonne alternative, mais il faudra éviter de multiplier les branches parallèles pour limiter le nombre de merges sans historiques.
Enfin, je signale l'existence d'un projet d'une version décentralisée de subversion, qui nécessite ce dernier, nommée svk.
----
Les deux outils supportent la notion de trigger/hook, c à d des actions automatiquement déclenchées au moment des opérations de checkin/commit, checkout, etc.
A lire aussi :
http://www.dwheeler.com/essays/scm.html
http://better-scm.berlios.de/compa [...] rison.html Message édité par el muchacho le 11-08-2004 à 00:09:41 ---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
|