Git
Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.
Git
Développeurs Junio Hamano, Linus Torvalds
Dernière version 1.5.4 (le 2 février 2008)
Environnement POSIX
Type Gestion de version (La gestion de version (en anglais revision control) est une activité qui consiste à maintenir l'ensemble des versions d'un logiciel. Essentiellement utilisée dans le domaine de la création de logiciels, elle est surtout concernée...)
Licence GNU (GNU est un système d'exploitation composé exclusivement de logiciels libres.) GPL
Site Web (Un site Web est un ensemble de pages Web hyperliées entre elles et mises en ligne à une adresse Web. On dit aussi site Internet par métonymie, le World Wide Web reposant sur Internet.) git (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...).or.cz

git est un gestionnaire de code source (Le code source (ou les sources voire le source) est un ensemble d'instructions écrites dans un langage de programmation informatique de haut niveau, compréhensible par un être humain entraîné,...) qui fait partie des nombreux systèmes de gestion de versions. Il a été créé par Linus Torvalds (Linus Benedict Torvalds, né le 28 décembre 1969 à Helsinki en Finlande, est un informaticien finlandais. Il est connu pour avoir créé en...), le créateur de Linux (Au sens strict, Linux est le nom du noyau de système d'exploitation libre, multitâche, multiplate-forme et multi-utilisateur de type UNIX créé par Linus Torvalds, souvent désigné comme le noyau Linux. Par...), et est distribué sous la GNU GPL version 2. C'est donc un logiciel libre (Un logiciel libre est un logiciel dont l'utilisation, l'étude, la modification, la duplication et la diffusion sont universellement autorisées sans contrepartie financière. Les droits correspondant...).

Particularités techniques

Comme BitKeeper (BitKeeper est un logiciel de gestion de version.), Git ne repose pas sur un serveur centralisé. C'est un outil (Un outil est un objet finalisé utilisé par un être vivant dans le but d'augmenter son efficacité naturelle dans l'action. Cette augmentation se traduit par la simplification des actions entreprises, par une plus grande...) 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 (Le mot contrôle peut avoir plusieurs sens. Il peut être employé comme synonyme d'examen, de vérification et de maîtrise.) calculée avec la fonction SHA-1. Quand un fichier ( Un fichier est un endroit où sont rangées des fiches. Cela peut-être un meuble, une pièce, un bâtiment, une base de données informatique. Par exemple : fichier des patients...) 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 (Le mot disque est employé, aussi bien en géométrie que dans la vie courante, pour désigner une forme ronde et régulière, à l'image d'un palet — discus en latin.).

Git n'était pas, au départ, à proprement parler un logiciel (En informatique, un logiciel est un ensemble d'informations relatives à des traitements effectués automatiquement par un appareil informatique. Y sont inclus les instructions de traitement, regroupées sous forme...) 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 (Graphie) de vue (La vue est le sens qui permet d'observer et d'analyser l'environnement par la réception et l'interprétation des rayonnements lumineux.) 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 (La gestion de version (en anglais revision control) est une activité qui consiste à maintenir l'ensemble des versions d'un logiciel. Essentiellement utilisée dans le domaine de la création de logiciels, elle est surtout concernée...) 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 (En informatique, une base de données (Abr. : « BD » ou « BDD ») est un lot d'informations stockées dans un...), 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.

Fonctionnement

Git possède deux structures de données : une base d'objets et un cache de répertoires. Il existe quatre types d'objets :

  • l'objet (De manière générale, le mot objet (du latin objectum, 1361) désigne une entité définie dans un espace à trois dimensions, qui a une fonction précise, et qui peut être désigné par une étiquette verbale. Il est...) blob, qui représente le contenu d'un fichier (l'origine de cette dénomination est probablement à chercher dans les Binary Large OBjects des bases de données).
  • l'objet tree ("arbre (Un arbre est une plante terrestre capable de se développer par elle-même en hauteur, en général au delà de sept mètres. Les arbres acquièrent une...)" en anglais), qui est une liste d'objets de type blobs et des informations associées à chaque blob, tel que le nom du fichier et les permissions. Cet objet décrit l'arborescence des sources à un temps (Le temps est un concept développé par l'être humain pour appréhender le changement dans le monde.) donné.
  • l'objet commit, qui donne accès à l'historique d'une arborescence de source. Il contient un message (La théorie de l'information fut mise au point pour déterminer mathématiquement le taux d’information transmis dans la communication d’un message par...) de log, un objet arbre et pointe vers un ou plusieurs objets commit parents.
  • l'objet tag ("étiquette" ou "marqueur" en anglais), qui peut contenir des méta-informations associées à un autre objet. En général, cet objet sert à enregistrer la signature numérique (Une information numérique (en anglais « digital ») est une information ayant été quantifiée et échantillonnée, par opposition à une information dite...) d'un objet commit correspondant à une version particulière des données (Dans les technologies de l'information (TI), une donnée est une description élémentaire, souvent codée, d'une chose, d'une transaction d'affaire, d'un événement, etc.) mis en gestion de version dans Git.

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é (La quantité est un terme générique de la métrologie (compte, montant) ; un scalaire, vecteur, nombre d’objets ou d’une autre manière de dénommer la valeur...) 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).

Quelques commandes

Git dispose notamment des commandes suivantes (pour une liste complète, consultez la page de manuel Git) :

  • git-init-db crée un nouveau dépôt.
  • git-update-cache --add ajoute de nouveaux objets blobs dans la base des objets pour chaque fichier modifié depuis le dernier commit. Les objets précédents restent inchangés.
  • git-write-tree crée un nouvel objet tree avec le cache du répertoire et l'ajoute dans la base des objets. Elle retourne le haché de l'objet tree.
  • git-commit-tree intègre le haché d'un objet tree et les hachés des objets commits parents pour créer un nouvel objet commit.

Interfaces

Petr Baudis maintient un ensemble (En théorie des ensembles, un ensemble désigne intuitivement une collection d’objets (les éléments de l'ensemble), « une multitude qui peut être...) 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 (Le mois (Du lat. mensis «mois», et anciennement au plur. «menstrues») est une période de temps arbitraire.) d'avril 2005, il existait deux interfaces Web pour Git :

  • gitweb : implémentée en Perl et maintenue par Kay Sievers.
  • wit (wit) : implémentée en Python et maintenue par Christian Meder.

Développement

Git a été spécialement développé et optimisé pour le noyau Linux (Le noyau Linux est un noyau de système d'exploitation de type UNIX. Le noyau Linux est un logiciel libre développé essentiellement en C par une...). 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 (Un projet est un engagement irréversible de résultat incertain, non reproductible a priori à l’identique, nécessitant le concours et...).

Origine du nom

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. "

Page générée en 0.119 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique