SVN, GIT ou Mercurial, lequel choisir ?
SVN, Git et Mercurial sont tous des outils de versionning qui servent à faire au moins 2 choses :
- garder un historique de toutes les modifications du code source
- pouvoir travailler à plusieurs sur un même projet, en fusionnant les modifications des différents développeurs (merge)
Pendant longtemps, Subversion (abrégé : SVN) était le plus utilisé. SVN est développé par la fondation Apache, tout comme le serveur HTTP du même nom, il s'agit d'une amélioration d'un programme plus ancien aujourd'hui obsolète : CVS.
Mais depuis quelques années, SVN perds du terrain au profit de 2 nouveaux outils concurrents : Git et Mercurial.
Alors il y a plusieurs raisons à cela. Il y a d'abord un aspect technique, car Git et Mercurial offrent une approche totalement différente de Subversion : Git et Mercurial ont une approche décentralisée, là ou SVN est centralisé.
Repository centralisé et décentralisé
SVN fonctionne selon un modèle client/serveur : le serveur SVN contient le repository, et les clients envoient le code au serveur SVN. Le repository est unique, tout le monde utilise le même, on appelle cela un système de versionning centralisé.
Git et Mercurial ont une autre philosophie, il n'y a pas de serveur ni de client, il n'y a qu'un seul programme unique. Chaque développeur dispose de son propre repository en local sur sa machine, et toute la subtilité de ce système est qu'on peut échanger des données entre les repositories. Cela s'appelle un système de versionning décentralisé.
On créé alors un repository de référence (le repository public) sur lequel tout le monde va publier ses modifications. Ce modèle offre de nombreux avantages : il permet de fusionner des branches (merge) beaucoup plus facilement, du coup on utilise les branches de manière plus intensive que sur SVN, cela permet même de gérer la mise en production (par exemple en utilisant le workflow gitflow).
La page du jour est quelle version d'excel choisir ?, bonne lecture.
Qu'est-ce qu'un repository ?
Le repository (aussi appelé le dépôt de code en français) est une sorte de base de données qui contient tout l'historique des modifications d'un ensemble de fichiers (que l'on qualifie de fichiers versionnés).
C'est une notion commune à tous les outils de versionning : SVN, Git, Mercurial, Perforce...
Comment choisir son outil de versionning ?
Pour faire le bon choix, il faut savoir de quoi vous avez besoin, voilà quelques pistes :
- Centralisé ou décentralisé
C'est la première question que vous devez vous poser. La tendance actuelle tend clairement à l'abandon des systèmes de versionning centralisé, au profit des systèmes décentralisés. Mais ça n'est pas pour autant qu'il faut suivre le troupeau est faire pareil. Je vous conseille de lire ceci si vous comprenez bien l'anglais : Distributed Version Control is here to stay, baby. - Interface graphique
Tous ces outils s'utilisent en ligne de commande. Mais il existe des clients graphiques très bien conçus, selon l'outil et surtout selon votre système d'exploitation.
TortoiseSVN est par exemple un excellent client SVN pour Windows, il permet de créer un repository en local (sans serveur, grâce àfile:///
) et de l'utiliser sans taper une seule ligne de commande.
Pour GIT en revanche il n'y a pas de bon client gratuit avec interface graphique sous Windows (le principal est git GUI). Par contre sur Mac OS on en trouve beaucoup comme Tower, SmartGit ou SourceTree. Le site officiel répertorie les principaux clients GUI : http://git-scm.com/download/gui/win
Par contre pour Mercurial il y a TortoiseHG (aussi appelé hg workbench) qui est tout aussi pratique que TortoiseSVN, ça peut-être un critère de choix qui peut vous conduire à utiliser Mercurial plutôt que GIT si vous voulez un VCS décentralisé. Voilà un excellent tutoriel pour apprendre Mercurial : hg init. - La communauté
Il existe de nombreux services sur internet qui permettent d'héberger des projets personnel ou professionnel. Le plus célèbre d'entre eux est Github qui a pris le pas sur SourceForge.net. Mais il y a aussi Bitbucket (Altassian), Codeplex (Microsoft), Google Code, ou encore Assembla.
Certains de ces sites comme github ne gèrent qu'un VCS, donc si vous avez l'intention de partager un projet sur Github, vous devrez choisir Git.
Découvrez ce tutoriel photoshop : dessiner un pirate à lire tout de suite !
Après, il y a quand même un risque de confidentialité à partir du moment où le repo est hébergé par un tiers comme github...