Nouvelles options de sécurité

La version 2.56 introduit git add --resolved, qui ne prend en compte que les chemins encore en conflit dans l’index et recherche les marqueurs <<<<<<<>>>>> avant de les ajouter. En présence de ces marqueurs, la commande s’interrompt, évitant ainsi la propagation d’erreurs de résolution. Cette garde‑fouille cible les scénarios où des agents automatisés ou des développeurs oublient de nettoyer les conflits, réduisant le risque de « verification debt » dans les branches partagées.

git add --resolved

Le même principe de protection s’étend à la suppression de branches avec git branch --delete-merged, qui accepte le filtrage par motif et propose un mode --dry-run pour visualiser les suppressions avant exécution. D’autres commandes, comme git bisect run --reset-when-found et le regroupement des opérations de référence via git refs, offrent des mécanismes de comparaison‑et‑échange pour éviter les mises à jour concurrentes.

Optimisations de performance

Git 2.56 améliore le calcul du merge‑base en interrompant la traversée de l’historique dès que l’ancêtre commun est identifié. Sur le noyau Linux, la commande git merge-base --all v4.8 v4.9 est passée de 167 441 étapes et 0,29 s à 3 887 étapes et 0,01 s. Un cas monorepo montre une réduction similaire, de 0,68 s à 0,01 s.

Le traitement des diff a reçu une refonte majeure. Sur un checkout Chromium contenant environ 500 000 entrées d’index, un diff qui durait près de huit minutes ne prend plus que 0,07 s, grâce à la suppression d’un algorithme quadratique. De même, le chargement des packfiles a été optimisé : dans un dépôt avec 37 815 packs, le temps de lecture est passé de 4,5 s à une latence quasi nulle.

Gestion du stockage et automatisation

Le nouveau mode --path-walk pour le repackaging utilise les bitmaps de portée et les îles de delta, deux éléments auparavant incompatibles. Dans le dépôt Fluent UI, un pack de 558,5 Mo a été réduit à 164,4 Mo, soit une diminution d’environ 71 %. Cette réduction se traduit directement en économies de bande passante et de capacité pour les hébergeurs.

Les utilisateurs de clones partiels bénéficient de git repack --drop-filtered, qui supprime les blobs dépassant un seuil (ex. 1 Mo) et les récupère à la demande. Cette granularité permet de limiter la taille du dépôt local tout en conservant la possibilité de récupérer les objets filtrés lorsqu’ils sont nécessaires.

Implications pour les agents IA

Le texte souligne que les agents de codage automatisés interagissent avec Git à grande vitesse. Les garde‑fous introduits – refus de staging avec des marqueurs de conflit, aperçu des suppressions de branches – offrent des points de contrôle que les agents peuvent appliquer systématiquement. Le fait que 104 développeurs, dont 39 nouveaux contributeurs, aient participé à cette version montre un effort communautaire pour rendre Git plus résilient aux usages automatisés.