Sortie de la version 2.26 du systÚme de contrÎle de version distribué Git

Disponible lancement d'un systÚme de gestion décentralisé des textes sources Git 2.26.0. 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. Principales nouveautés:

  • La transition par dĂ©faut vers la deuxiĂšme version 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 des informations d'identification 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 fsmonitor-watchman, assurant l'intĂ©gration avec le mĂ©canisme Facebook Watchman 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 remplacer 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

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