lancement d'un systÚme de gestion décentralisé des textes sources . Git est l'un des systÚmes de gestion de versions les plus populaires, fiables et performants, offrant des outils flexibles de développement non linéaire basés sur le branchement et la fusion. Pour garantir l'intégrité de l'historique et la résistance aux modifications rétroactives, un hachage implicite de l'ensemble de l'historique précédent est utilisé dans chaque commit, et il est également possible de vérifer numériquement par des signatures des développeurs pour des tags et commits spécifiques.
Comparé à la version précédente, la nouvelle version comprend 504 modifications, préparées avec la participation de 64 développeurs, dont 12 ont participé au développement pour la premiÚre fois. :
- La transition par dĂ©faut vers du protocole de communication Git, qui est utilisĂ© lors de la connexion distante d'un client au serveur Git. La deuxiĂšme version du protocole se distingue par la possibilitĂ© de filtrer les branches et les tags cĂŽtĂ© serveur, en fournissant au client une liste rĂ©duite de rĂ©fĂ©rences. Auparavant, lors de l'exĂ©cution de toute commande de rĂ©cupĂ©ration, une liste complĂšte de rĂ©fĂ©rences dans tout le dĂ©pĂŽt Ă©tait toujours envoyĂ©e au client, mĂȘme lorsque le client ne mettait Ă jour qu'une seule branche ou vĂ©rifiait la validitĂ© de sa copie du dĂ©pĂŽt. Une autre nouveautĂ© marquante est la capacitĂ© d'ajouter de nouvelles fonctionnalitĂ©s au protocole aux mesures de l'apparition de nouvelles fonctionnalitĂ©s dans les outils. Le code client reste compatible avec l'ancien protocole et peut continuer Ă fonctionner Ă la fois avec de nouveaux et d'anciens serveurs, revenant automatiquement Ă la premiĂšre version si le serveur ne prend pas en charge la seconde.
- La commande « git config » a Ă©tĂ© dotĂ©e de l'option « --show-scope » qui facilite l'identification de l'endroit oĂč certaines configurations sont dĂ©finies. Git permet de dĂ©finir des paramĂštres Ă diffĂ©rents endroits : dans le dĂ©pĂŽt (.git/info/config), dans le rĂ©pertoire de l'utilisateur (~/.gitconfig), dans le fichier de configuration systĂšme (/etc/gitconfig), ainsi que via les options de ligne de commande et les variables d'environnement. Lors de l'exĂ©cution de « git config », il est souvent difficile de comprendre oĂč la configuration recherchĂ©e est dĂ©finie. Pour rĂ©soudre ce problĂšme, l'option « --show-origin » Ă©tait disponible, mais elle ne montre que le chemin vers le fichier oĂč la configuration est dĂ©finie, ce qui est utile si l'on souhaite modifier le fichier, mais ne permet pas de changer la valeur via « git config » en utilisant les options « --system », « --global » ou « --local ». La nouvelle option « --show-scope » affiche le contexte de dĂ©finition des variables et peut ĂȘtre utilisĂ©e avec « --show-origin » :
$ git --list --show-scope --show-origin
global file:/home/user/.gitconfig diff.interhunkcontext=1
global file:/home/user/.gitconfig push.default=current
[âŠ]
local file:.git/config branch.master.remote=origin
local file:.git/config branch.master.merge=refs/heads/master$ git config --show-scope --get-regexp 'diff.*'
global diff.statgraphwidth 35
local diff.colormoved plain$ git config --global --unset diff.statgraphwidth
- Dans les paramĂštres de liaison l'utilisation de masques dans l'URL est autorisĂ©e. Toutes les configurations HTTP et les informations d'identification dans Git peuvent ĂȘtre dĂ©finies pour toutes les connexions (http.extraHeader, credential.helper) ainsi que pour les connexions liĂ©es Ă une URL (credential.https://example.com.helper, credential.https://example.com.helper). Jusqu'Ă prĂ©sent, l'utilisation de masques, tels que *.example.com, n'Ă©tait autorisĂ©e que pour les configurations HTTP, mais n'Ă©tait pas prise en charge pour la liaison des informations d'identification. Dans Git 2.26, ces diffĂ©rences ont Ă©tĂ© supprimĂ©es et, par exemple, pour lier un nom d'utilisateur Ă tous les sous-domaines, il est dĂ©sormais possible d'indiquer :
[credential "https://*.example.com"]
username = ttaylorr
- La prise en charge expérimentale du clonage partiel (partial clones) continue de s'élargir, permettant de ne transférer qu'une partie des données et de travailler avec une copie incomplÚte du dépÎt. Dans cette nouvelle version, une nouvelle commande « git sparse-checkout add » a été ajoutée, permettant d'ajouter des répertoires individuels pour appliquer l'opération « checkout » uniquement à une partie de l'arborescence de travail, au lieu de lister tous ces répertoires à la fois par la commande « git sparse-checkout set » (il est possible d'ajouter un répertoire à la fois, sans avoir à redéfinir toute la liste à chaque fois).
Par exemple, pour cloner le dĂ©pĂŽt git/git sans transmettre les blobs, en limitant la vĂ©rification uniquement au rĂ©pertoire racine de la copie de travail et avec un marquage distinct pour l'extraction des rĂ©pertoires «t» et «Documentation», vous pouvez spĂ©cifier :$ git clone âfilter=blob:none âsparse git@github.com:git/git.git
$ cd git
$ git sparse-checkout init âcone$ git sparse-checkout add t
âŠ.
$ git sparse-checkout add Documentation
âŠ.
$ git sparse-checkout list
Documentation
t - Les performances de la commande «git grep», utilisĂ©e pour rechercher dans le contenu actif du dĂ©pĂŽt ainsi que dans les rĂ©visions historiques, ont Ă©tĂ© considĂ©rablement amĂ©liorĂ©es. Pour accĂ©lĂ©rer la recherche, il Ă©tait possible de scanner le contenu de l'arborescence de travail en utilisant plusieurs threads («git grep âthreads»), mais les recherches dans les rĂ©visions historiques Ă©taient effectuĂ©es en un seul fil. Maintenant, cette limitation a Ă©tĂ© levĂ©e grĂące Ă l'implĂ©mentation de la possibilitĂ© de parallĂ©liser les opĂ©rations de lecture depuis le stockage d'objets. Par dĂ©faut, le nombre de threads est fixĂ© au nombre de cĆurs CPU, ce qui dans la plupart des cas ne nĂ©cessite plus un rĂ©glage explicite de l'option «âthreads».
- Ajout de la prise en charge de l'autocomplétion pour les sous-commandes, chemins, références et autres arguments de la commande «git worktree», permettant de travailler avec plusieurs copies de travail du dépÎt.
- Ajout de la prise en charge des couleurs vives, pour lesquelles il existe des sĂ©quences d'Ă©chappement ANSI. Par exemple, dans les paramĂštres de couleurs de syntaxe «git config âcolor» ou «git diff âcolor-moved» Ă travers l'option «âformat», pour un bleu vif, vous pouvez spĂ©cifier «%C(brightblue)».
- Ajout d'une nouvelle version du script , assurant l'intégration avec le mécanisme pour accélérer le suivi des modifications de fichiers et l'apparition de nouveaux fichiers. AprÚs la mise à jour de git, il est nécessaire de le hook dans le dépÎt.
- Ajout d'optimisations pour accélérer les opérations de clonage partiel (partial clones), liées à l'utilisation de bitmaps
(bitmap machinery) pour Ă©viter un examen complet de tous les objets pendant le filtrage des rĂ©sultats. La vĂ©rification des blobs (âfilter=blob:none et âfilter=blob:limit=n) lors du clonage partiel est maintenant effectuĂ©e
de maniĂšre nettement plus rapide. GitHub a annoncĂ© l'application de patchs avec ces optimisations et une prise en charge expĂ©rimentale du clonage partiel. - La commande « git rebase » a Ă©tĂ© migrĂ©e vers un autre backend, utilisant par dĂ©faut le mĂ©canisme âmergeâ (prĂ©cĂ©demment utilisĂ© pour « rebase -i ») au lieu de âpatch+applyâ. Dans certains dĂ©tails, les backends diffĂšrent, par exemple, aprĂšs la reprise de l'opĂ©ration aprĂšs la rĂ©solution d'un conflit (git rebase âcontinue), le nouveau backend propose d'Ă©diter le message du commit, tandis que l'ancien se contentait d'utiliser l'ancien message. Pour revenir Ă l'ancien comportement, vous pouvez utiliser l'option « âapply » ou dĂ©finir la variable de configuration ârebase.backendâ sur âapplyâ.
- Un exemple de gestionnaire de paramÚtres d'authentification, défini via .netrc, a été adapté pour un usage immédiat.
- Ajout de la configuration gpg.minTrustLevel pour définir le niveau minimum de confiance pour divers éléments exécutant la vérification de signature numérique.
- Ajout de l'option « âpathspec-from-file » dans « git rm » et « git stash ».
- Le développement des suites de tests se poursuit dans le cadre de la préparation à la transition vers l'algorithme de hachage SHA-2 au lieu de SHA-1.
Source : opennet.ru
