Réseau Libre-entreprise :

Git

par Michaël Parienti

 Présentation de l’outil Git

Git est un outil de gestion de versions décentralisé, développé initialement par Linus Torvalds. Utilisé pour le développement du noyau Linux, diffusé sous la licence libre GPL v2, ce système est maintenant utilisé par de nombreux autres projets libres : X.Org, freedesktop.org, GNOME, Perl, Wine, Vlc, etc.

Git possède toutes les fonctionnalités caractéristiques, et les avantages, d’un tel outil :

  • pas d’entrepôt central : toutes les copies de travail contiennent l’ensemble des données du projet, ce qui sécurise le projet contre les pertes de données ;
  • toutes les opérations standards (commits, visualisation d’historique, retour en arrière) sont rapides car réalisées sans accès au réseau ;
  • possibilité de travailler entièrement off-line, et de commiter sans publication des modifications ;
  • gestion des historiques, des branches, et fusions de branches.

Mais Git a des nombreux atouts qui le distingue de ses concurrents. En premier lieu sa performance. Git est généralement bien plus rapide que ses principaux concurrents [1].

Les dépôts Git utilisent moins de place que les dépôts des autres systèmes de gestion de versions décentralisés [2]. Plus étonnant, un dépôt Git peut prendre moins de place qu’une copie de travail SVN, bien qu’il contienne l’intégralité de toutes les révisions du projet, ce qui n’est pas de la copie de travail SVN [3].

Les autres atouts de Git sont ses fonctionnalités avancées telles que :

  • les commits interactifs : la possibilité de choisir, dans chaque fichier modifié, quelle ligne intégrera le commit ;
  • les cherry-pick : la possibilité de déplacer des patchs dans l’historique ou d’une branche à l’autre ;
  • git-stash pour stocker provisoirement les modifications en cours, par exemple pour corriger un bug qui vient d’être signalé ;
  • les patchs signés ;
  • git-bisect qui permet de retrouver dans l’historique d’un projet le commit qui a introduit un bug.

Enfin la grande force de Git est la facilité avec laquelle il permet de manipuler les branches. Créer des branches, passer de l’une à l’autre, les fusionner, les effacer, ne les publier que si nécessaire, toutes ces opérations sont extrêmement simples et rapides à effectuer.

Cela permet d’utiliser de nouveaux processus de développement et d’intégration logiciel par exemple basés sur le principe d’une branche par sujet (topic branch).

Heureusement pour ses concurrents, Git a aussi des faiblesses :

  • il ne permet pas la récupération partielle d’un dépôt, ce qui est pénalisant pour des projets avec des fichiers binaires de grande taille ;
  • git n’existe qu’en anglais ;
  • le programme git-svn, qui permet d’utiliser Git au dessus d’un dépôt Subversion, est peu performant sous Windows [4].

 Les prestations d’Easter-eggs

Les prestations d’Easter-eggs autour du logiciel Git sont de trois natures :

Tout d’abord Easter-eggs se propose d’aider à l’intégration de Git dans le SI du client. Cette prestation comprend l’installation d’un serveur central, la migration des données du précédent logiciel (CVS, Subversion ou tout autre système de gestion de version). Certaines entreprises souhaitent continuer à maintenir l’ancien dépôt centralisé en parallèle de l’utilisation de Git. Il est alors possible de mettre en place une synchronisation avec un dépôt Git.

Easter-eggs peut aussi assurer des formations à Git :

  • Introduction à Git et aux systèmes décentralisés de gestion de version ;
  • Utilisation avancée de Git : il s’agit de former aux fonctionnalités avancées dont certaines sont citées ci-dessus ;
  • Bonnes pratiques avec Git : les fonctionnalités offertes par Git impliquent une autre manière de gérer un projet, de créer des patchs, des branches, etc. Ce module présentera ces bonnes pratiques.

Enfin Easter-eggs peut assurer des prestations de conseil autour de Git. Certains outils intégrés à Git, comme git-bisect, nécessitent une expertise et un accompagnement pour leur mise en œuvre.


[1] voir ici, ici ou .

[2] voir ici ou .

[3] Voir ici.

[4] L’amélioration de git-svn sous windows est un projet proposé au Google Summer of Code 2009