git

Fiche logiciel validé
  • Création ou MAJ importante : 27/03/14
  • Correction mineure : 27/03/14
  • Rédacteur de la fiche : Matthieu Herrb - LAAS (CNRS)
  • Relecteur(s) : Anthony Mallet (LAAS Service 2I)
    David Gauchard (LAAS-CNRS)
  • Contributions importantes : Cette fiche a été rédigée initialement par Frédéric Camps. Elle est reprise avec son accord par Matthieu Herrb.
  • Responsable thématique : Anne Durand (CLEO)
Mots-clés

git : gestionnaire de version décentralisé

Description
Fonctionnalités générales

git est un logiciel de gestion de versions décentralisé. Son rôle principal est d'assurer le suivi des modifications dans un ensemble de fichiers. Il repose sur un système d'archivage de fichiers adressable par le contenu via l'utilisation de fonctions de hachage cryptographiques (SHA-1) pour indexer les fichiers.

git est principalement utile avec des fichiers au format texte (code source, fichiers de configuration,...) mais il peut aussi gérer des documents binaires de manière efficace.

Comme tout logiciel de gestion de version, il permet d'enregistrer les modifications successives de l'ensemble des fichiers, de visualiser l'historique des modifications, de gérer des branches de modifications parallèles.

Son aspect distribué rend cette dernière fonctionnalité particulièrement puissante. Chaque utilisateur
disposant d'une copie locale de l'historique du projet, il est possible de travailler hors-ligne, les outils de fusion des branches permettant ensuite de résoudre les éventuels conflits.

Enfin git permet de gérer de nombreux types de flux de travail, que ce soit pour un utilisateur isolé, des petits groupes de travail informel ou des gros projets nécessitant le respect de règles précises.

Autres fonctionnalités
  • Interfaces avec d'autres systèmes de gestion de versions : git permet d'importer des dépôts existants de CVS, SVN ou Perforce.
  • Interfaces graphiques en plus des outils de base en ligne de commande : git dispose d'outils graphiques pour visualiser l'historique des modifications d'un dépôt, soit intégrés dans la distribution de base (gitk, git-gui, gitweb) soit sous forme de logiciels tiers (qgit, giggle, ...)
  • « hooks » à tous les niveaux permettant d'insérer dans le processus des procédures de vérification du code, d'envoi de messages d'information,...
Interopérabilité

git est multi-plateformes (Unix (Linux, BSD, Solaris,...), Mac OS X, Windows). En plus de ses fonctions d'import/export vers d'autres systèmes de gestion de versions, il existe des plugins pour l'insérer dans de nombreux environnements de développement tels que Eclipse (egit), kdevelop, ou Xcode (voir liens dans logiciels connexes).

git-svn permet l'interopérabilité bi-directionnelle avec subversion.

L'outil Tortoise git permet une intégration avec l'explorateur de fichiers de Microsoft Windows.

Contexte d'utilisation dans mon laboratoire/service

De nombreux logiciels développés au laboratoire sont gérés sous git. Le service informatique propose un serveur d'hébergement git couplé au logiciel de forge Trac pour héberger les développements de chercheurs. En particulier les équipes du pôle robotique maintiennent l'ensemble de leurs développements mis à disposition sous licences libres sur ce serveur.

Limitations, difficultés, fonctionnalités importantes non couvertes

La principale difficulté de git est sa richesse fonctionnelle. Bien que les concepts et les commandes de base soient très faciles à comprendre, il y a derrière une richesse et une complexité qui peuvent dérouter certains utilisateurs.

git permettant une grande liberté dans le type d'organisation du développement, il faut se donner des moyens organisationnels pour gérer et canaliser le développement de projets de grande taille.

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré

Il est aisé d'utiliser git sous toutes les distributions de Linux (un seul package à installer), tous les systèmes BSD et probablement tout système Unix disposant des outils de ligne commande GNU (bash, grep, ...). Disponible sur Windows (version native msysgit et Tortoise Git) et MacOS X.

Plates-formes

Linux, *BSD, Solaris, MacOSX, Microsoft Windows

Logiciels connexes

-Forges logicielles autour de git :
Ces forges offrent des possibilités intéressantes de travail collaboratif via le coté distribué de git. En plus dans une forge git, si la forge ferme, on ne perd pas le dépôt, et il est possible de le migrer d'une forge à l'autre en cas de besoin.

  • github service gratuit pour les projets publiques, possibilité d'hébergement payant pour des projets privés.
  • gitorious hébergement de projets libres uniquement.
  • gitlab permet de créer sa propre forge git similaire à github
  • Et la plupart des forges classiques supportent git (intégré dans trac 1.0, fusionforge, chiliproject, redmine...)

-Interfaces web :
(en plus de gitweb, intégré à la distribution de git :

-Visualisation de l'historique :

-Plugin pour IDEs :

-git pour MS Windows :

-Serveur git multi-utilisateurs :
gitolite permet d'héberger des projets git sur un serveur avec une gestion des utilisateurs via des clés publiques SSH

Autres logiciels aux fonctionnalités équivalentes
Environnement de développement
Type de structure associée au développement

git a été créé par et pour les développeurs du noyau Linux.
Il a été écrit à l'origine par Linus Torvalds et est actuellement maintenu par C Junio Hamano.

Eléments de pérennité
Références d'utilisateurs institutionnels
Environnement utilisateur
Liste de diffusion ou de discussion, support et forums
  • Groupe Google pour les débutants.
  • git [at] vger [dot] kernel [dot] org (Liste de diffusion) plus centrée sur le développement (archives).
Documentation utilisateur
Divers (astuces, actualités, sécurité)

Pour la résolution des conflits lors de la fusion de branche, git peut utiliser des logiciels externes tels que meld ou kdiff3 pour proposer une interface plus conviviale que l'édition d'un fichier avec des marqueurs de conflits.

Contributions

Les contributions se font via la communauté des contributeurs de git.

Commentaires

en compléments d'infos...

en logiciels connexes, je compléterai la liste par:
- smartgit (http://www.syntevo.com/smartgithg) pour les 3 os (win/mac/nix)
- tig (http://jonas.nitro.dk/tig) pour mac/nix, un text-mode interface sympa pour git
- sourcetree (https://www.atlassian.com/software/sourcetree) de chez Atlassian pour Mac/Win

pour mac:
- gitx (http://gitx.frim.nl) => installation via port ($port install gitx)

et un très bon lien tuto pour bien commencer avec git en images et qui résume les commandes les plus utilisées.
https://www.atlassian.com/fr/git

La référence sous forme de livre en ligne avec ProGit
http://git-scm.com/book/fr

my 2cts

Référence visuelle de git

C'est tout dit dans le titre. http://marklodato.github.com/visual-git-guide/inde...

Merci à ChM pour ce pointeur.