Par Robin Moussu à Grenoble le 7 février 2023

Le but est d’avoir suffisamment de connaissance pour être capable de reconstruire un gestionnaire de version décentralisé très similaire à git, mais sans rentrer dans les détails d’implémentation. Ce talk est très inspiré de https://tom.preston-werner.com/2009/05/19/the-git-parable.html. Pour être plus précis, l’objectif pédagogique est d’expliquer la structure de donnée utilisée par git, étant donnée que ça clarifie grandement la compréhension de l’outil. Le talk est dense, les questions sont les bienvenue à la fin.

Les briques de base (on fabrique un snapshot) :

  • les blobs (permettent de recréer des fichiers)
  • les arbre (permettent de recréer des dossiers)
  • les commits (permettent de recréer l’historique et pointent sur un arbre racine pour recréer un snapshot

Ces briques sont présentées en construisant notre premier commits (~4mn), puis on en construit un deuxième pour être sûr d’avoir bien compris. Cela permet de mettre en évidence la déduplication, le support implicite des renommage, et des pistes d’optimisation pour rechercher efficacement les diffs (j’espère 3mn).

Les goodies (~1mn) :

  • Un panneau vous êtes ici : HEAD
  • Survol de la notion de branche, tag, branche distantes, et l’intéraction avec HEAD

Réimplémentons les commandes pricipales (~2mn, seule l’idée principale est donnée, l’implémentation est laissé en exercice pour l’auditeur, si on manque de temps une slide présentant l’idée principale de chaque commande sera visible pendant les questions) :

  • git log
  • git fetch / git push
  • git diff
  • git blame
  • git rebase
  • git merge

Commentaires