A3 · Gestion de version : l'historique comme graphe
Lab
Nécessite Python 3.12 ou plus récent, Git et un terminal, pydantic.
Décompressez l'archive, puis dans ce dossier :
uv run python verify.py
Évaluation
Évaluation de sortie A3 : historique, diagnostic et récupération
Durée : 35 minutes, puis un défi oral de 3 à 5 minutes.
Le générateur du lab crée un dépôt Git jetable. Pour cette évaluation, n'exécutez jamais les commandes de récupération dans un autre dépôt.
Rendu
1. Modèle de l'état, A3.1
Dessinez les snapshots actuels, les relations parent, les références et les commits atteignables. Séparez les concepts généraux de l'implémentation Git par objets adressés par leur contenu. Vérifiez le graphe avec des commandes de plomberie.
2. Localisation du défaut, A3.2
Utilisez une requête d'historique reproductible et un test exécutable pour trouver le premier commit où le total devient faux. Soumettez la trace et expliquez pourquoi elle isole la frontière comportementale.
3. Récupération de l'état partagé, A3.3
Auditez la branche shared-work déplacée volontairement, son reflog et la
référence collaborator-snapshot, puis récupérez le tip sous une nouvelle
branche sans déplacer une référence existante. Prouvez que les deux fichiers
de travail attendus restent atteignables. Indiquez quelle preuve dépend de la
rétention du reflog local et laquelle vient de la référence du collaborateur.
Défi oral
L'enseignant déplace une référence, révèle une référence de collaborateur ou modifie l'hypothèse de rétention du reflog. Mettez à jour l'analyse d'atteignabilité et démontrez la récupération sûre dans le dépôt jetable.
Références
- Chacon & Straub, Pro Git, ch. 10 (Git Internals)
- Chacon & Straub, Pro Git, ch. 7.7 (Reset demystified) and ch. 7.10 (Debugging with bisect)