Git --projet-boite-à-outils

Principe d'un logiciel de suivi de version

Problématique

De manière générale, un logiciel de suivi de version répond à deux problématiques :
- Conserver un historique des modifications des fichiers d'un projet, potentiellement pour revenir en arrière en cas de pépin
- Permet de travailler en équipe sur un projet

Le premier point est très intéressant même pour un développeur seul. En effet, qui ne s'est jamais retrouvé dans la situation où du code, fonctionnant quelques minutes auparavant, ne fonctionne désormais plus, sans qu'on ait une idée de la modification exacte qui a cassé le système ?

Pour remédier à cela, on peut être tenter de copier tous ses fichiers dans une archive zip par exemple, pour avoir une sauvegarde. Mais c'est un système peu efficace, qui encombre le disque dur, prend du temps et ne permet d'un retour en arrière très limité. On peut aussi être tenté de sauvegarder seulement un ou deux fichiers, de les renommer, etc. mais ça devient vite ingérable.

C'est là qu'intervient le logiciel de gestion source, qui permet de prendre en charge cette problématique de manière efficace. Il met hors de la vue du développeur les sauvegardes, les effectue de manière performante en terme d'espace disque en ne stockant que les modifications qui ont été réalisés sur les fichiers (et non les fichiers complet) et nous permet de revenir sur une sauvegarde précise (qu'on aura pu commenter) et de comparer les fichiers actuels avec leur versions antérieures.

Systèmes centralisés et décentralisés

Si je ne me trompe pas, les VCS étaient traditionnellement centralisés. C'est à dire qu'ils étaient basés sur un serveur qui se chargeait du travail précité. CVS, Subversion (SVN) et Team Foundation Server (TFS) sont basés sur ce principe.

Un de leur point faible est justement la complexité de déploiement et de maintenance que peut représenter un tel serveur. J'utilisais à un moment un serveur TFS 2010 sur mon pc de bureau, cela consommait des ressources et faire une sauvegarde du serveur lui-même était relativement compliqué (cela impliquait le dump manuel de bases SQL Server). Heureusement, du côté Microsoft il existe désormais le service Visual Studio Online qui permet de profiter des avantages de TFS simplement sans avoir à utiliser un produit qui n'était de toute façon disponible que pour les professionnels.

Git

Git est lui un système décentralisé : chaque développeur qui l'utilise a le logiciel installé sur sa machine et s'en sert pour suivre les fichiers du projet. La mise en commun des fichiers sources est réalisée au moyen de fusion (appelée merge) avec et depuis des fichiers maintenus par des dépôts accessibles par le réseau, qui utilisent eux-mêmes le logiciel git.

Services en ligne

Si un gestionnaire de source local est très pratique pour conserver un historique de son code, il ne l'est pas pour mettre à disposition des membres de son équipe les sources du projet. Ce type de logiciel possède une version serveur, mais il est généralement embêtant pour un individu seul ou un groupe d'étudiant d'en installer un sur un serveur (dans le sens de machine physique ou virtuelle connectée en permanence au réseau), car cela coûte de l'argent.

C'est pourquoi un certain nombre de services en ligne se sont développés. Passons en revue les plus intéressants pour un étudiant peu fortuné.

GitHub (lien)

Si vous en entendrez parler beaucoup sur ce site et ailleurs, c'est parce qu'il s'agit d'un des services les plus connus. Il s'est fait un nom grâce à l'hébergement gratuit de projets FLOSS. Cependant, en tant que débutant (?) en informatique, vous n'avez probablement pas envie de rendre publique tous vos petits projets.

GitHub n'est malheureusement pas gratuit de base pour les dépôts privés. En tant qu'étudiant, vous pouvez cependant les contactez pour demander la version de base, qui coûte normalement 7$ par mois et qui vous permet d'avoir 5 dépôts privés.
C'est ce que j'ai fait pour ce projet. Notez qu'il vous sera demandé une preuve de votre inscription dans une institution éducative.

Visual Studio en ligne (lien)

Ici, il s'agit d'un service où les dépôts sont toujours privés et gratuit jusqu'à 5 utilisateurs. L'équivalent de GitHub dans le monde Microsoft s'appelle Codeplex, et son principal intérêt est d'offrir une compatibilité TFS. Il supporte également le protocole git, c'est pourquoi je le liste ici.

Il s'agit d'un très bon service, dont je me sers depuis la beta et qui héberge à ce jour 14 de mes projets personnels. Un point sympathique est de ne pas avoir à créer un nième compte si vous disposez déjà d'un compte live, hotmail ou Microsoft. Le système évolue rapidement et est souvent mis à jour avec de nouvelles fonctionnalités. En outre, il est compatible avec Visual Studio.

Git Bucket (lien)

Je ne l'ai pas testé, mais il s'agit visiblement du concurrent le plus sérieux à GitHub pour les projets privés. Il est gratuit jusqu'à 5 utilisateurs.