Après trois mois de développement, la version du système de contrôle de source distribué Git 2.43 a été publiée. Git est l'un des systèmes de contrôle de version les plus populaires, les plus fiables et les plus performants qui fournit des outils de développement non linéaires flexibles basés sur la création de branches et la fusion de branches. Pour garantir l'intégrité de l'historique et la résistance aux modifications rétroactives, un hachage implicite de l'intégralité de l'historique précédent dans chaque commit est utilisé, il est également possible de vérifier les balises individuelles et les commits avec les signatures numériques des développeurs.
Par rapport à la version précédente, la nouvelle version comprenait 464 modifications préparées avec la participation de 80 développeurs, dont 17 ont participé au développement pour la première fois. Principales innovations :
- Les options « --filter » et « --filter-to » ont été ajoutées à la commande « git repack », permettant de repacker le référentiel en tenant compte du filtre d'objet spécifié, et, si nécessaire, de déplacer les objets qui ne le font pas. satisfaire le filtre spécifié à un endroit séparé. Des options peuvent être utilisées pour partitionner le référentiel selon certains critères (par exemple, pour supprimer les objets inutiles ou trop volumineux), tout en conservant la possibilité d'accéder à toutes les parties par clonage partiel. Par exemple, pour laisser des blobs d'une taille inférieure à 1 Mo dans le référentiel et déplacer d'autres objets volumineux vers un référentiel distinct, vous pouvez exécuter : $ git init —bare ../backup.git $ git repack -ad —filter='blob :limit=1m' \ --filter-to=../backup.git/objects/pack/pack
L'initialisation d'un référentiel par clonage partiel permet de travailler avec une copie incomplète du référentiel, en traitant correctement les appels aux objets manquants (lors de l'accès aux objets manquants, ils seront chargés à la volée selon les besoins).
- Ajout de la possibilité de travailler avec plusieurs fichiers pack avec des informations sur des objets inaccessibles (« packs cruft ») qui ne sont pas référencés dans le référentiel (non référencés par des branches ou des balises). En utilisant la nouvelle option « git repack —max-cruft-size », vous pouvez déterminer la taille maximale d'un seul fichier pack et diviser la base de données d'objets inaccessibles en une série de petits fichiers pack. L'utilisation de plusieurs petits fichiers de pack au lieu d'un seul gros peut réduire considérablement les opérations d'E/S lors du reconditionnement de référentiels contenant un grand nombre d'objets inaccessibles, car chaque opération de reconditionnement n'aura pas besoin d'écraser toutes les données.
- Ajout de la reconnaissance des tentatives d'exécution d'une double annulation d'un commit via « git revert » et prise en compte de ce fait lors de la génération d'un message d'inversion (si vous répétez « git revert » au lieu de « Revert : Revert : fix bug », « Reapply fix bug" sera écrit, et si vous annulez la modification une troisième fois - "Revert Reapply fix bug"). $ git revert —no-edit HEAD >/dev/null $ git revert —no-edit HEAD >/dev/null $ git log —oneline a300922 (HEAD -> main) Réappliquer « fix bug » 0050730 Annuler « fix bug » b290810 réparer le bug
- Les options "--rfc" et "--subject-prefix" peuvent être utilisées ensemble. Par exemple, pour générer une lettre avec le préfixe « [RFC PATCH bpf-next] » dans la ligne d'objet, vous pouvez spécifier : $ git format-patch —subject-prefix="PATCH bpf-next" —rfc
- La commande "git log" permet de spécifier l'espace réservé "%(decorate)" pour afficher les noms des branches associées lors de la spécification du format à l'aide de l'option "--format", par exemple : $ git log --format='% cr%(decorate) (%h) %s' il y a 3 jours (HEAD -> master, origin/master, origin/HEAD) (e0939bec27) RelNotes : corrections mineures de formulation dans les notes de version 2.43.0 il y a 7 jours (tag : v2.43.0 .1-rc801) (dadef3b2.43) Git 1-rc7 il y a 8 jours (4ed7538ebXNUMX) Fusionner la branche 'tb/rev-list-unpacked-fix'
- Ajout de la possibilité d'appliquer des règles .mailmap aux spécificateurs de format spécifiés via l'option --format, tels que "%(authorname)" et "%(committeremail)" à "git for-each-ref" et des commandes similaires.
Source: opennet.ru
