Publication du systÚme de gestion de texte distribué Git 2.50. Git se distingue par ses performances élevées et propose des outils de développement non linéaire basés sur le branchement et la fusion des 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 la certification par des signatures numériques des développeurs pour les tags et commits individuels. Le code de Git est distribué sous la licence GPLv2+.
Comparé à la version précédente, la nouvelle version comprend 621 modifications, préparées avec la participation de 98 développeurs, dont 35 participent pour la premiÚre fois au développement. Les principales nouveautés :
- La possibilité de subdiviser en plusieurs fichiers d'objets inaccessibles ('cruft packs') a été élargie, sur lesquels il n'existe pas de références dans le dépÎt (aucune branche ou tag ne les pointe). L'utilisation de plusieurs petits fichiers pack au lieu d'un gros permet de réduire significativement les opérations d'entrée/sortie lors de la réemballage des dépÎts avec un grand nombre d'objets inaccessibles, car il n'est pas nécessaire de réécrire toutes les données pour chaque opération de réemballage.
La nouvelle version propose l'option '--combine-cruft-below-size', qui permet de fusionner les fichiers pack existants dont la taille ne dépasse pas une valeur donnée. Contrairement à l'option précédemment disponible '--max-cruft-size', la nouvelle option '--combine-cruft-below-size' ne limite pas la taille maximale du fichier pack résultant, ce qui permet de fusionner plus efficacement les fichiers pack dans les dépÎts avec un grand nombre d'objets inaccessibles, répartis sur plusieurs fichiers pack.
- Ajout d'un support expĂ©rimental pour la mise Ă jour incrĂ©mentielle des index multi-pack MIDX (multi-pack index), oĂč chaque couche d'index MIDX contenant des informations sur la disponibilitĂ© des objets est stockĂ©e dans un fichier bitmap sĂ©parĂ©. Dans les trĂšs grands dĂ©pĂŽts, la forme d'index mise en Ćuvre permet d'ajouter rapidement et efficacement de nouvelles cartes de disponibilitĂ© des objets au fur et Ă mesure des commits.
- Le moteur ancien d'exĂ©cution des opĂ©rations de fusion «recursive» a Ă©tĂ© retirĂ© de la base de code, remplacĂ© par un moteur entiĂšrement repensĂ©, «ORT» (Ostensibly Recursiveâs Twin), offrant de meilleures performances, plus de fonctionnalitĂ©s et une maintenance plus aisĂ©e. ORT permet de vĂ©rifier la possibilitĂ© de fusionner deux objets sans crĂ©er de nouveaux objets dans le dĂ©pĂŽt (avec l'ancien moteur, il fallait exĂ©cuter la commande «git merge-tree âwrite-tree», qui Ă©crivait de nouveaux objets dans le dĂ©pĂŽt). Dans Git 2.50, l'option «âquiet» a Ă©tĂ© ajoutĂ©e Ă la commande merge-tree, permettant de vĂ©rifier la possibilitĂ© de fusion sur la base du code de retour sans Ă©crire de donnĂ©es dans le dĂ©pĂŽt.
- L'option «âfilter» a Ă©tĂ© ajoutĂ©e à «git cat-file âbatch» et Ă des commandes similaires, permettant de sauter certains objets lors de l'exĂ©cution de l'opĂ©ration. git cat-file âbatch-check=â%(objectname)â âfilter=âobject:type=treeâ
- La commande «git maintenance» a introduit trois nouvelles actions : worktree-prune, rerere-gc et reflog-expire. L'action worktree-prune est destinée à supprimer les anciens ou corrompus arbres de travail (worktrees) dans le dépÎt. L'action rerere-gc efface les anciennes entrées restantes aprÚs la résolution des conflits de fusion. L'action reflog-expire retire les objets obsolÚtes et inaccessibles du reflog.
- La commande «git reflog drop» a été ajoutée, permettant de supprimer toutes les données reflog pour la branche spécifiée.
- L'optimisation du traitement et de l'utilisation des références a été effectuée, par exemple, le caching des préfixes de références a été mis en place, et des vérifications superflues lors de l'exécution de la commande «git update-ref» ont été supprimées, augmentant l'efficacité de la recherche des itérateurs de références existants.
- Des paramÚtres KeepAlive ont été ajoutés à la bibliothÚque cURL : http.keepAliveIdle, http.keepAliveInterval et http.keepAliveCount.
- La commande «git rev-list» a permis la sortie dans un format adaptĂ© Ă l'analyse automatique, oĂč chaque champ est sĂ©parĂ© par le caractĂšre NUL.
- Le langage Perl a été exclu des dépendances nécessaires pour les utilitaires de documentation et l'exécution du jeu de tests («make test»). De nombreux scripts Perl en une seule ligne dans les tests ont été remplacés par des fonctions shell ou réécrits en C.
- Un gestionnaire userdiff a été ajouté pour le format de fichier de configuration «.ini».
- Le support du serveur SMTP d'Outlook a été amélioré dans la commande send-email.
Source : opennet.ru
