Présentation

OpenAI a récemment travaillé sur l'amélioration de Git pour les gros dépôts. Les développeurs ont identifié plusieurs problèmes et ont proposé des solutions pour améliorer les performances et la fiabilité de Git.

Optimisation des performances

Un des problèmes identifiés était lié à la sélection de bitmap. Les développeurs ont constaté que la méthode actuelle de sélection de bitmap sous-estimait les commits de fusion qui exposaient de grandes quantités d'historique de dépôt. Pour résoudre ce problème, ils ont proposé de choisir les commits de bitmap en fonction de l'historique qu'ils rendent accessible, plutôt que de se baser uniquement sur la longueur du chemin. Cette modification a permis de réduire le temps de construction de 984,73 secondes à 200,06 secondes.

Un autre problème était lié à la vérification de contenu en masse. Les développeurs ont constaté que les fichiers pouvaient changer entre une vérification de contenu en masse et la requête finale de surveillance du système de fichiers. Pour résoudre ce problème, ils ont proposé de conserver les descripteurs de fichiers et les métadonnées scannés jusqu'à la vérification finale de surveillance du système de fichiers. Les résultats ne sont acceptés qu'après confirmation que aucun changement de worktree concurrent n'a invalidé la vérification.

Amélioration de la fiabilité

Les développeurs ont également travaillé sur l'amélioration de la fiabilité de Git. Ils ont identifié un problème lié à la suppression de branches, où un indice de boucle réutilisé faisait que l'analyse statique de Coccinelle durait des heures et dépassait la limite de six heures de l'intégration continue. Pour résoudre ce problème, ils ont proposé de déclarer des indices de boucle séparés, ce qui permet à l'analyse statique de se terminer normalement.

En outre, les développeurs ont ajouté la possibilité de documenter un fichier `.csts` optionnel qui enregistre un résultat de `git status --porcelain=v2` connu comme propre. Sur un worktree APFS principal, le résultat est réutilisé uniquement après avoir vérifié l'index, HEAD, la configuration, les attributs, les règles d'ignorance et l'historique de surveillance du système de fichiers. Les fichiers de cache manquants, obsolètes ou malformés retombent toujours à la vérification de statut ordinaire.

Conclusion

Les travaux d'OpenAI sur Git pour les gros dépôts ont permis d'améliorer les performances et la fiabilité de Git. Les développeurs ont identifié et résolu plusieurs problèmes, notamment liés à la sélection de bitmap, à la vérification de contenu en masse et à la suppression de branches. Ces améliorations devraient permettre aux utilisateurs de Git de bénéficier d'une expérience plus fluide et plus fiable.

git status --porcelain=v2