Version de contrôle de source Git 2.36

Après trois mois de développement, le système de contrôle de code source distribué Git 2.36 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, 717 modifications ont été adoptées dans la nouvelle version, préparée avec la participation de 96 développeurs, dont 26 ont participé au développement pour la première fois. Principales innovations :

  • Les commandes « git log » et « git show » ont désormais une option « —remerge-diff » qui vous permet d'afficher les différences entre le résultat global de la fusion et les données réelles reflétées dans le commit après le traitement de la commande « merge » , ce qui vous permet d'évaluer clairement les changements apportés à la suite de la résolution des conflits de fusion. La commande normale « git show » met en retrait les différentes résolutions de conflits, ce qui rend les changements difficiles à comprendre. Par exemple, dans la capture d'écran ci-dessous, la ligne « +/- » sans indentation montre la dernière résolution du conflit associé au changement de nom de sha1 en oid dans le commentaire de la première branche, et « +/- » avec indentation montre l'initiale. résolution du conflit provoqué par l'apparition d'un argument supplémentaire dans la deuxième branche de la fonction dwim_ref().
    Version de contrôle de source Git 2.36

    Lorsque vous utilisez l'option "--remerge-diff", les différences entre les résolutions de conflits ne sont pas séparées pour chaque branche parent, mais les différences globales entre le fichier qui présente des conflits de fusion et le fichier dont les conflits sont résolus sont affichées.

    Version de contrôle de source Git 2.36

  • Flexibilité accrue dans la configuration du comportement de vidage des caches disque via un appel à la fonction fsync(). Le paramètre core.fsyncObjectFiles précédemment disponible a été divisé en deux variables de configuration core.fsync et core.fsyncMethod, offrant la possibilité d'appliquer fsync non seulement aux fichiers objets (.git/objects), mais également à d'autres structures git telles que des liens ( .git /refs), refloger et compresser les fichiers.

    À l'aide de la variable core.fsync, vous pouvez spécifier une liste de structures Git internes pour lesquelles fsync sera également appelée après une opération d'écriture. La variable core.fsyncMethod vous permet de sélectionner une méthode pour vider le cache, par exemple, vous pouvez sélectionner fsync pour utiliser l'appel système du même nom, ou spécifier l'écriture seule pour utiliser la réécriture du cache de page.

  • Pour se protéger contre les vulnérabilités qui manipulent la substitution par d'autres utilisateurs des répertoires .git dans des sections partagées, la vérification du propriétaire du référentiel a été renforcée. L'exécution de commandes git n'est désormais autorisée que dans ses propres répertoires ".git". Si le répertoire contenant le référentiel appartient à un autre utilisateur, alors une erreur s'affichera par défaut. Ce comportement peut être désactivé à l'aide du paramètre safe.directory.
  • La commande « git cat-file », destinée à afficher le contenu source des objets Git, a été complétée par l'option « --batch-command », qui complète les options « --batch » et « --batch-check » précédemment disponibles. " avec la possibilité de sélectionner de manière adaptative le type de sortie en utilisant " contents <object> " pour afficher le contenu ou " info <object> " pour afficher des informations sur l'objet. De plus, la commande « flush » est prise en charge pour vider le tampon de sortie.
  • A la commande « git ls-tree », destinée à générer une liste du contenu d'une arborescence d'objets, l'option « —oid-only » (« —object-only ») a été ajoutée, similaire à « —name-only », affichant uniquement les identifiants des objets pour simplifier l'appel depuis les scripts. L'option « --format » est également implémentée, qui vous permet de définir votre propre format de sortie en combinant des informations sur le mode, le type, le nom et la taille.
  • La commande « git bisect run » implémente la détection de la non-définition de l'indicateur de fichier exécutable pour un script et dans ce cas, l'affichage des erreurs avec les codes 126 ou 127 (auparavant, si le script ne pouvait pas être exécuté, toutes les révisions étaient marquées comme ayant des problèmes) .
  • Ajout d'une option --refetch à la commande "git fetch" pour récupérer tous les objets sans informer l'autre partie du contenu déjà présent sur le système local. Ce comportement peut être utile pour récupérer après des échecs lorsque l'intégrité des données locales est incertaine.
  • Les commandes "git update-index", "git checkout-index", "git read-tree" et "git clean" prennent désormais en charge les index partiels pour améliorer les performances et économiser de l'espace dans les référentiels qui effectuent des opérations d'index partiel. ).
  • Le comportement de la commande « git clone —filter=… —recurse-submodules » a été modifié, ce qui conduit désormais à un clonage partiel des sous-modules (auparavant, lors de l'exécution de telles commandes, le filtre n'était appliqué qu'au contenu principal et les sous-modules étaient cloné complètement sans tenir compte du filtre).
  • La commande "git bundle" a ajouté la prise en charge de la spécification de filtres pour placer sélectivement le contenu, similaire aux opérations de clonage partiel.
  • Ajout de l'option "--recurse-submodules" à la commande "git branch" pour parcourir les sous-modules de manière récursive.
  • Userdiff propose un nouveau gestionnaire pour le langage Kotlin.

Source: opennet.ru

Ajouter un commentaire