Git | |
---|---|
Développeurs | Junio Hamano, Linus Torvalds |
Dernière version | 1.5.4 (le 2 février 2008) |
Environnement | POSIX |
Type | Gestion de version |
Licence | GNU GPL |
Site Web | git.or.cz |
git est un gestionnaire de code source qui fait partie des nombreux systèmes de gestion de versions. Il a été créé par Linus Torvalds, le créateur de Linux, et est distribué sous la GNU GPL version 2. C'est donc un logiciel libre.
Comme BitKeeper, Git ne repose pas sur un serveur centralisé. C'est un outil bas niveau, qui se veut simple et très performant, dont la principale tâche est de gérer l'évolution du contenu d'une arborescence.
Git indexe les fichiers d'après leur somme de contrôle calculée avec la fonction SHA-1. Quand un fichier n'est pas modifié, la somme de contrôle ne change pas et le fichier n'est stocké qu'une seule fois. En revanche, si le fichier est modifié, les deux versions sont stockées sur le disque.
Git n'était pas, au départ, à proprement parler un logiciel de gestion de versions. Linus Torvalds expliquait que, " par bien des aspects, vous pouvez considérer git comme un système de fichiers : il permet un adressage associatif, et possède la notion de versionnage, mais surtout, je l'ai conçu en résolvant le problème du point de vue d'un spécialiste des systèmes de fichiers (mon métier, ce sont les noyaux !), et je n'avais absolument aucun intérêt à créer un système de gestion de version traditionnel. ". Il a aujourd'hui évolué pour intégrer toutes les fonctionalités d'un gestionnaire de versions.
Git est considéré comme performant, au point que certains autres logiciels de gestion de version (Darcs, Arch), qui n'utilisent pas de base de données, se sont montrés intéressés par le système de stockage des fichiers de Git pour leur propre fonctionnement. Ils continueraient toutefois à proposer des fonctionnalités plus évoluées.
Git possède deux structures de données : une base d'objets et un cache de répertoires. Il existe quatre types d'objets :
La base des objets peut contenir n'importe quel type d'objets. Une couche intermédiaire, utilisant des index (les sommes de contrôle), établit un lien entre les objets de la base et l'arborescence des fichiers.
Chaque objet est identifié par une somme de contrôle SHA-1 de son contenu. Git calcule la somme de contrôle et utilise cette valeur pour déterminer le nom de fichier de l'objet. L'objet est placé dans un répertoire dont le nom correspond aux deux premières lettres de la somme de contrôle. Le reste de la somme de contrôle constitue alors le nom du fichier pour cet objet.
Git enregistre chaque révision dans un fichier en tant qu'objet blob unique. Les relations entre les objets blobs sont déterminées en examinant les objets commit. En général, les objets blobs sont stockés dans leur intégralité en utilisant la compression de la zlib. Ce principe peut rapidement consommer une grande quantité de place disque ; de ce fait, les objets peuvent être combinés dans des archives, qui utilisent la compression différentielle (c'est-à-dire que les blobs sont enregistrés sous la forme de différences par rapport aux autres blobs).
Git dispose notamment des commandes suivantes (pour une liste complète, consultez la page de manuel Git) :
Petr Baudis maintient un ensemble de scripts appelé cogito (anciennement git-pasky), un système de gestion de version utilisant Git comme couche sous-jacente.
Catalin Marinas maintient un autre système au dessus de Git : Stacked GIT (ou StGit).
Au mois d'avril 2005, il existait deux interfaces Web pour Git :
Git a été spécialement développé et optimisé pour le noyau Linux. Linus Torvalds a débuté son écriture en avril 2005, pour remplacer le programme propriétaire BitKeeper. En effet, Larry McVoy a révoqué la possibilité d'utiliser gratuitement son logiciel, après qu'Andrew Tridgell a tenté une rétro-ingénierie sur les protocoles utilisés par BitKeeper. Les raisons de cette révocation restent toutefois controversées.
La première version a été publiée le 7 avril 2005. Depuis, le développement de cet outil s'est poursuivi. Il a été progressivement amélioré, se voyant doté d'interfaces graphiques, d'interfaces Web ou de scripts évolués.
Le Kernel Summit de juillet 2005 a été l'occasion pour Linus Torvalds d'annoncer que les versions suivantes du noyau (à partir de la version 2.6.12) seraient développées à l'aide de Git.
Fin juillet 2005, Linus Torvalds a décidé de confier la maintenance et les évolutions de Git à Junio Hamano, expliquant qu'il avait " toujours dit qu'il ne voulait pas vraiment le maintenir sur le long terme ".
Le développement est très actif. La parution de la première version stable (1.0) date du 21 décembre 2005, soit moins d'un an après le démarrage du projet.
Le magazine PC World nous apprend que quand on lui a demandé pourquoi il avait appelé son logiciel "git", ce qui signifie " personnage pourri " en argot anglais, Linus Torvalds a répondu " je ne suis qu'un égocentrique, donc j'appelle tous mes projets d'après ma propre personne. D'abord Linux, puis git. "