• # git, un outil de bas niveau

    Posté par (site web personnel) . En réponse à la dépêche Le développement du noyau continue autour de Git. Évalué à 10.

    Avant que tout le monde (enfin, sauf les deux commentaires précédents) n'imagine que Linus a fait mieux que BitKeeper (et Subversion, Arch, Darcs, Monotone, etc.) en deux semaines, voici quelques précisions sur git.

    git est un outil de bas niveau, simple et très performant, qui a pour but de gérer l'évolution du contenu d'une arborescence. Il gère en gros trois types d'objets de manière très rapide, caractérisés par leur somme de contrôle SHA-1 : des blobs (fichiers de base), des arbres (listes de blobs et d'arbres) et des commit (un arbre correspondant à une version donnée, et liste des commits précédents ayant permis d'en arriver là). Il gère par ailleurs un index, afin d'accélerer le travail sur un arbre voulu. Il permet quelques opérations en plus (affichage du contenu d'un blob à un moment donné, fusion simple d'arbres), et c'est tout. On est très loin des autres systèmes en termes de fonctionnalités (mais Linus n'a pas besoin de tout), et très en avance en termes de performance (car Linus en a bien besoin).

    Et voilà et c'est tout et c'est déjà pas mal. C'est suffisant pour bosser (avec plein de scripts autour pour automatiser, je suppose) en attendant que d'autres solutions deviennent plus matures, ou que git lui-même évolue encore plus.

    Le truc intéressant au niveau des performances, c'est que du coup les gestionnaires de version qui n'utilisent pas de base de données (Arch, Darcs) sont très intéressés par se servir de git sous le capot pour le stockage des fichiers, tout en offrant leurs fonctionnalités plus évoluées.

    Bref, la gestion de source dans le monde du libre, qui avait déjà pas mal évolué ces dernières années et ces derniers mois, s'est encore pris un coup d'accélérateur grâce à git. Finalement, BitKeeper aura pas mal fait bouger les choses, quitte à être le bâton plus que la carotte. :-)