Sortie du systĂšme de gestion de versions Git 2.39

AprÚs deux mois de développement, la version 2.39 du systÚme de gestion de versions distribuée Git a été publiée. Git est l'un des systÚmes de gestion de versions les plus populaires, fiables et performants, offrant des outils flexibles pour le développement non linéaire basés sur le branching et le merging. Pour maintenir l'intégrité de l'historique et la résistance aux modifications rétroactives, l'hachage implicite de tout l'historique antérieur est utilisé dans chaque commit, et il est également possible de certifier numériquement les signatures des développeurs pour certains tags et commits.

Comparé à la version précédente, cette nouvelle version intÚgre 483 modifications, préparées par la participation de 86 développeurs, dont 31 ont participé au développement pour la premiÚre fois. Les principales nouveautés :

  • La commande « git shortlog », conçue pour afficher des rĂ©sumĂ©s avec des statistiques de l'historique des modifications, a Ă©tĂ© dotĂ©e de l'option « —group » pour le groupement arbitraire des commits par des champs ne se limitant pas Ă  l'auteur ou au committer. Par exemple, pour afficher la liste des dĂ©veloppeurs avec des informations sur le nombre de modifications, en tenant compte des co-auteurs mentionnĂ©s dans le champ « Co-authored-by », vous pouvez utiliser la commande : git shortlog -ns —group=author —group=trailer:co-authored-by

    La sortie de shortlog peut ĂȘtre agrĂ©gĂ©e Ă  l'aide de spĂ©cificateurs de formatage, et l'option « —group » permet de simplifier considĂ©rablement la crĂ©ation de rapports complexes et d'Ă©viter l'exĂ©cution de commandes supplĂ©mentaires de tri. Par exemple, pour crĂ©er un rapport indiquant combien de commits pour une version donnĂ©e ont Ă©tĂ© acceptĂ©s chaque mois, on peut spĂ©cifier : git shortlog v2.38.0.. —date='format:%Y-%m' —group='' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Auparavant, pour effectuer une opĂ©ration similaire, il aurait fallu utiliser les utilitaires sort et uniq : git log v2.38.0.. —date='format:%Y-%m' —format='' | sort | uniq -c

  • Les capacitĂ©s du mĂ©canisme «cruft packs», destinĂ© Ă  empaqueter les objets inaccessibles, pour lesquels il n'existe pas de lien dans le dĂ©pĂŽt (ni de branches ni de tags), ont Ă©tĂ© Ă©tendues. Les objets inaccessibles sont supprimĂ©s par le ramasse-miettes, mais restent dans le dĂ©pĂŽt pendant un certain temps avant leur suppression afin d'Ă©viter des conditions de course. Le mĂ©canisme «cruft packs» permet de stocker tous les objets inaccessibles dans un seul fichier pack, avec les donnĂ©es sur la date de modification de chaque objet reflĂ©tĂ©es dans une table sĂ©parĂ©e, enregistrĂ©e dans un fichier distinct ayant l'extension «.mtimes», afin qu'elles ne se chevauchent pas avec le temps de modification global.

    La durĂ©e de conservation des objets inaccessibles dans le dĂ©pĂŽt avant leur suppression effective est dĂ©finie par l'option «—prune=». Bien que le dĂ©lai avant la suppression soit un moyen assez efficace et pratique d'Ă©viter la corruption du dĂ©pĂŽt en raison des conditions de course, il n'est pas 100 % fiable. Pour simplifier la rĂ©cupĂ©ration d'un dĂ©pĂŽt corrompu, une fonction de sauvegarde des objets manquants a Ă©tĂ© ajoutĂ©e dans la nouvelle version, permettant de conserver une copie externe de tous les objets supprimĂ©s ; pour cela, une option «—expire-to» a Ă©tĂ© ajoutĂ©e Ă  la commande «git repack». Par exemple, pour sauvegarder dans le fichier backup.git les objets inaccessibles qui n'ont pas Ă©tĂ© modifiĂ©s au cours des 5 derniĂšres minutes, vous pouvez utiliser la commande : git repack —cruft —cruft-expiration=5.minutes.ago -d —expire-to=../backup.git

  • La vitesse d'exĂ©cution de l'opĂ©ration «git grep —cached» a Ă©tĂ© considĂ©rablement augmentĂ©e (jusqu'Ă  70 %) lors de la recherche dans les zones oĂč le clonage partiel (sparse-checkout) est utilisĂ© et pour lesquelles des index partiels (sparse index) existent. Auparavant, lorsque l'option «—cached» Ă©tait spĂ©cifiĂ©e, la recherche se faisait d'abord dans l'index normal, puis dans les index partiels, ce qui entraĂźnait des retards significatifs lors de la recherche dans de grands dĂ©pĂŽts.
  • L'exĂ©cution a Ă©tĂ© accĂ©lĂ©rĂ©e sur le serveur la vĂ©rification de la cohĂ©rence des nouveaux objets avant leur insertion dans le dĂ©pĂŽt lors de l'opĂ©ration «git push». GrĂące au passage Ă  la prise en compte uniquement des rĂ©fĂ©rences dĂ©clarĂ©es lors de la vĂ©rification, dans un dĂ©pĂŽt de test contenant 7 millions de rĂ©fĂ©rences, dont seulement 3 % sont concernĂ©es par l'opĂ©ration push, les optimisations apportĂ©es ont permis de rĂ©duire le temps de vĂ©rification par 4,5 fois.
  • Pour se protĂ©ger contre de potentielles vulnĂ©rabilitĂ©s d'entier dans le code, la commande « git apply » limite la taille maximale des correctifs traitĂ©s. Si la taille du correctif dĂ©passe 1 Go, une erreur sera dĂ©sormais affichĂ©e.
  • Pour se prĂ©munir contre d'Ă©ventuelles vulnĂ©rabilitĂ©s, des modifications ont Ă©tĂ© apportĂ©es pour nettoyer les informations superflues dans les en-tĂȘtes lors de l'utilisation du module h2h3 avec les options GIT_TRACE_CURL=1 ou GIT_CURL_VERBOSE=1 en lien avec HTTP/2.
  • Lors de l'exĂ©cution de l'opĂ©ration checkout sur une branche qui est un lien symbolique vers une autre branche, la commande « git symbolic-ref HEAD » affichera dĂ©sormais le nom de la branche cible au lieu du nom du lien symbolique.
  • Ajout du support de l'argument @{-1} dans l'option « --edit-description » (« git branch --edit-description @{-1} ») pour modifier la description de la branche prĂ©cĂ©dente.
  • Ajout de la commande « git merge-tree --stdin », permettant de transmettre une liste de paramĂštres via le flux d'entrĂ©e standard.
  • Sur les systĂšmes de fichiers en rĂ©seau, le gestionnaire fsmonitor, qui suit les modifications du systĂšme de fichiers, est dĂ©sactivĂ© par dĂ©faut.

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster