Version de contrôle de source Git 2.35

Après deux mois de développement, le système de contrôle de code source distribué Git 2.35 est sorti. Git est l'un des systèmes de contrôle de versions les plus populaires, les plus fiables et les plus performants, fournissant des outils de développement non linéaires flexibles 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 tout l'historique précédent est utilisé dans chaque commit ; ​​il est également possible de certifier des balises et des commits individuels avec les signatures numériques des développeurs.

Par rapport à la version précédente, la nouvelle version comprenait 494 modifications préparées avec la participation de 93 développeurs, dont 35 ont participé au développement pour la première fois. Principales innovations :

  • Les possibilités d'utilisation des clés SSH pour signer numériquement des objets Git ont été étendues. Pour limiter la durée de validité de plusieurs clés, la prise en charge des directives OpenSSH « valide-avant » et « valide-après » a été ajoutée, avec lesquelles vous pouvez garantir un travail correct avec les signatures après la rotation de la clé par l'un des développeurs. Avant cela, il y avait un problème avec la séparation des signatures avec les anciennes et les nouvelles clés - si vous supprimez l'ancienne clé, il sera impossible de vérifier les signatures faites avec elle, et si vous la laissez, il restera alors possible de créer de nouvelles signatures avec l'ancienne clé, qui a déjà été remplacée par une autre clé. En utilisant valid-before et valid-after, vous pouvez séparer la portée des clés en fonction de l'heure à laquelle la signature a été créée.
  • Dans le paramètre merge.conflictStyle, qui permet de sélectionner le mode d'affichage des informations sur les conflits lors d'une fusion, la prise en charge du mode « zdiff3 » est apparue, qui déplace toutes les lignes standards spécifiées au début ou à la fin du conflit en dehors du conflit. zone, qui permet une présentation plus compacte des informations.
  • Le mode « --staged » a été ajouté à la commande « git stash », qui vous permet de masquer uniquement les modifications ajoutées à l'index, par exemple dans une situation où vous devez reporter temporairement certaines des modifications complexes afin de d'abord ajoutez ce qui est déjà prêt et occupez-vous du reste après un moment. Le mode est similaire à la commande « git commit », écrivant uniquement les modifications placées dans l'index, mais au lieu de créer un nouveau commit dans « git stash —staged », le résultat est stocké dans la zone temporaire de stockage. Une fois que les modifications sont nécessaires, elles peuvent être annulées avec la commande « git stash pop ».
  • Un nouveau spécificateur de format a été ajouté à la commande "git log", "--format=%(describe)", qui vous permet de combiner la sortie de "git log" avec la sortie de la commande "gitscribe". Les paramètres de "gitscribe" sont spécifiés directement dans le spécificateur ("-format=%(describe:match= ,exclure= )"), dans lequel vous pouvez également inclure des balises raccourcies ("-format=%(describe:tags= )") et configurez le nombre de caractères hexadécimaux pour identifier les objets ("--format=%(describe:abbrev= )")). Par exemple, pour lister les 8 derniers commits dont les balises n'ont pas de balise release candidate, et en spécifiant des identifiants à 8 caractères, vous pouvez utiliser la commande : $ git log -8 —format='%(describe:exclude=*-rc *, abréviation = 13 )' v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643-g2b95d94b056ab v2.34.1-642 -gb56bd95bbc8f7v2.34.1-203-gffb9f2980902d v2.34.1-640-gdf3c41adeb212 v2.34.1-639-g36b65715a4132
  • Le paramètre user.signingKey prend désormais en charge de nouveaux types de clés qui ne se limitent pas au type « ssh- » et spécifient le chemin complet du fichier vers la clé. Les types alternatifs sont spécifiés à l'aide du préfixe « key :: », par exemple « key :: ecdsa-sha2-nistp256 » pour les clés ECDSA.
  • La vitesse de génération d'une liste de changements en mode « -histogram », ainsi que lors de l'utilisation de l'option « -color-moved-ws », qui contrôle la mise en évidence des espaces dans une différence de couleur, a été sensiblement augmentée.
  • La commande "git jump", utilisée pour fournir à Vim des informations sur le saut exact vers la position souhaitée dans un fichier lors de l'analyse des conflits de fusion, de l'affichage des différences ou de l'exécution d'une opération de recherche, offre la possibilité d'affiner les conflits de fusion couverts. Par exemple, pour limiter les opérations au répertoire "foo" uniquement, vous pouvez spécifier "git jump merge - foo", et pour exclure le répertoire "Documentation" du traitement - "git jump merge - ':^Documentation'"
  • Un travail a été effectué pour standardiser l'utilisation du type "size_t" au lieu de "unsigned long" pour les valeurs représentant la taille des objets, ce qui a permis d'utiliser des filtres "clean" et "smudge" avec des fichiers de plus de 4 Go sur toutes les plateformes, y compris les plateformes avec le modèle de données LLP64, dont le type « unsigned long » est limité à 4 octets.
  • L'option « -empty=(stop|drop|keep) » a été ajoutée à la commande « git am », qui vous permet de sélectionner le comportement des messages vides qui ne contiennent pas de correctifs lors de l'analyse des correctifs de la boîte aux lettres. La valeur « stop » mettra fin à toute l’opération de patch, « drop » sautera un patch vide et « keep » créera un commit vide.
  • Ajout de la prise en charge des index partiels (index clairsemé) aux commandes "git reset", "git diff", "git blâme", "git fetch", "git pull" et "git ls-files" pour améliorer les performances et économiser de l'espace dans référentiels , dans lesquels des opérations de clonage partiel (sparse-checkout) sont effectuées.
  • La commande "git sparse-checkout init" est obsolète et doit être remplacée par "git sparse-checkout set".
  • Ajout de l'implémentation initiale d'un nouveau backend "réftable" pour stocker des références telles que des branches et des balises dans le référentiel. Le nouveau backend utilise le stockage par blocs utilisé par le projet JGit et est optimisé pour stocker un très grand nombre de références. Le backend n'est pas encore intégré au système refs et n'est pas prêt pour une utilisation pratique.
  • La palette de couleurs de la commande "git grep" a été ajustée pour correspondre à l'utilitaire GNU grep.

Source: opennet.ru

Ajouter un commentaire