La version 2.53 du systÚme de gestion de version distribué Git a été publiée. Git se distingue par sa haute performance et fournit des outils de développement non linéaire, basés sur le bifurcation et la fusion de branches. Pour garantir l'intégrité de l'historique et la résistance aux modifications « rétroactives », il utilise un hachage implicite de toute l'histoire précédente dans chaque commit, ainsi que l'authentification par des signatures numériques des développeurs pour des balises et commits spécifiques. Le code Git est distribué sous la licence GPLv2+.
Comparée à la version précédente, la nouvelle version comprend 466 modifications, préparées avec la participation de 70 développeurs (21 d'entre eux ont participé au développement de Git pour la premiÚre fois). Les principales nouveautés :
- Ajout de la possibilitĂ© d'appliquer la stratĂ©gie d'archivage des dĂ©pĂŽts « gĂ©omĂ©trique » (« git repack âgeometric ») aux dĂ©pĂŽts externes partiellement clonĂ©s fonctionnant en mode « promisor » (les objets manquants sont tĂ©lĂ©chargĂ©s au besoin). Lors de la rĂ©emballage avec l'option « âgeometric », les fichiers d'archive avec l'extension « .promisor » sont traitĂ©s et emballĂ©s sĂ©parĂ©ment. La stratĂ©gie « gĂ©omĂ©trique » permet de rĂ©duire le temps d'entretien des grands monodĂ©pĂŽts, en rĂ©alisant une rĂ©emballage sĂ©lective des objets et en Ă©vitant des opĂ©rations coĂ»teuses en ressources, comme la fusion de tous les fichiers d'archive (la progression gĂ©omĂ©trique de la taille des fichiers d'archive est prĂ©servĂ©e, chaque nouveau fichier d'archive devant ĂȘtre au moins deux fois plus grand que le prĂ©cĂ©dent).
- Une option « âsigned-commits=strip-if-invalid » a Ă©tĂ© ajoutĂ©e Ă la commande « git fast-import » pour supprimer les signatures numĂ©riques des objets importĂ©s qui sont devenues invalides aprĂšs la réécriture d'une partie de l'historique du dĂ©pĂŽt. Auparavant, il Ă©tait possible soit d'importer, soit de supprimer toutes les signatures, sans distinction entre celles qui Ă©taient valides et celles qui avaient perdu leur sens. L'option « strip-if-invalid » permet de mettre en Ćuvre des outils pour prĂ©server les signatures valides et pour refaire signer les objets avec des signatures devenues obsolĂštes.
- La sortie de la commande « git repo structure » a Ă©tĂ© enrichie d'informations sur la taille de tous les objets accessibles (reachable) dans le dĂ©pĂŽt, dĂ©taillĂ©e par type. Les informations sont dĂ©sormais affichĂ©es de maniĂšre lisible avec des unitĂ©s de mesure, et montrent sĂ©parĂ©ment la taille rĂ©elle et celle occupĂ©e sur le disque, ce qui permet d'Ă©valuer la taille totale du dĂ©pĂŽt sur le disque. $ git repo structure | Structure du dĂ©pĂŽt | Valeur | | âââââââ | âââ- | | * RĂ©fĂ©rences | | | * Nombre | 1.78 k | | * Branches | 5 | | * Tags | 1.03 k | | * Remotes | 749 | | * Autres | 0 | | | | * Objets accessibles | | | * Nombre | 421.37 k | | * Commits | 88.03 k | | * Arbres | 169.95 k | | * Blobs | 162.40 k | | * Tags | 994 | | * Taille dĂ©pliĂ©e | 7.61 GiB | | * Commits | 60.95 MiB | | * Arbres | 2.44 GiB | | * Blobs | 5.11 GiB | | * Tags | 731.73 KiB | | * Taille sur disque | 301.50 MiB | | * Commits | 33.57 MiB | | * Arbres | 77.92 MiB | | * Blobs | 189.44 MiB | | * Tags | 578.13 KiB |
- La commande « git maintenance » a été enrichie d'une sous-commande « is-needed » pour effectuer des opérations d'entretien du dépÎt uniquement en cas de nécessité.
- La commande expĂ©rimentale « git replay » implĂ©mente par dĂ©faut la mise Ă jour des rĂ©fĂ©rences dans la transaction, plutĂŽt que d'afficher oĂč les rĂ©fĂ©rences doivent pointer sans mise Ă jour.
- La commande « git blame » a ajoutĂ© la possibilitĂ© de choisir l'algorithme d'Ă©valuation des diffĂ©rences via l'option « âdiff-algorithm=<algo> ».
- La commande « git repo info » a Ă©tĂ© amĂ©liorĂ©e avec l'option « âall ».
- Le support des liens symboliques a été transféré depuis Git-for-Windows pour la plateforme Windows.
La derniĂšre version a ajoutĂ© un avertissement concernant l'activation par dĂ©faut de la compilation des composants en Rust dans Git 2.53. Cependant, dans la version Git 2.53, seules des amĂ©liorations isolĂ©es concernant le support de Rust ont Ă©tĂ© ajoutĂ©es (possibilitĂ© de compilation sans GNU sed), mais la compilation avec Rust en utilisant Makefile est restĂ©e dĂ©sactivĂ©e par dĂ©faut (nĂ©cessite le flag WITH_RUST), tandis qu'en utilisant Meson, elle s'active automatiquement en prĂ©sence du compilateur rustc. Dans Git 3.0, l'outil Rust devrait ĂȘtre inclus parmi les dĂ©pendances de compilation obligatoires.
Source : opennet.ru
