Et six mois ne se sont pas écoulés: le système de contrôle de version Git 2.29 est sorti



Salut,% username%, aujourd'hui, bonne nouvelle: dans le domaine public est apparu la version 2.29.0 du système de contrôle distribué Git . Probablement, sur Habré, cela ne vaut pas la peine de dire ce que c'est, car Git est toujours l'un des meilleurs systèmes.



La nouvelle version contient 627 modifications à la fois, qui ont été apportées par 89 développeurs. Nous vous parlerons des principaux changements et améliorations sous la coupe.



  • SHA-256 SHA-1 . Git . . , SHA-1 , Git . SHA3-256, SHA2-256, SHA2 Git . , , . , , - — .


  • Maintenant, Git a ajouté la possibilité d'inclure un nouveau format d'objet lors de la création d'un référentiel:


$ git init --object-format=sha256 repo
   Initialized empty Git repository in /home/ttaylorr/repo/.git/
 
   $ cd repo
   $ echo 'Hello, SHA-256!' >README.md
   $ git add README.md
   $ git commit -m "README.md: initial commit"
   [master (root-commit) 6e92961] README.md: initial commit
    1 file changed, 1 insertion(+)
    create mode 100644 README.md
 
   $ git rev-parse HEAD
   6e929619da9d82c78dd854dfe237c61cbad9e95148c1849b1f96ada5ee800810


Vous ne pouvez choisir qu'entre SHA-1 et SHA-256, il n'y a aucune possibilité de combiner différents hachages dans un référentiel.



  • Les commandes git fetch et git push prennent désormais en charge les spécifications de lien d'exclusion qui étendent les règles de correspondance des liens entre les branches dans les référentiels locaux et externes. Cette fonctionnalité sera utile dans les situations où vous devez non seulement sélectionner, mais également exclure certaines branches du mappage. Ainsi, lorsque vous devez extraire toutes les branches "refs / heads / *", sauf une "refs / heads / ref-to-exclude", avant de devoir spécifier la liste complète à l'aide de ce script:


   $ git ls-remote origin 'refs/heads/*' |
     grep -v ref-to-exclude |
     awk '{ print $2:$2 }' |
     xargs git fetch origin


  • Il existe maintenant un opérateur d'exception "^". Les expressions avec cet opérateur acceptent les modèles, mais ne peuvent pas faire référence aux identificateurs d'objet. Une commande utilisant le nouvel opérateur pourrait ressembler à ceci:


   $ git fetch origin 'refs/heads/*:refs/heads/*' ^refs/heads/ref-to-exclude


De plus, vous pouvez utiliser des exclusions dans les paramètres:



   $ git config --add remote.origin.fetch ^refs/heads/foo


  • Le "git shortlog" a désormais la possibilité de regrouper les commits par contenu de champs supplémentaires, "Révisé par:" et "Coauthored-by:", et pas seulement par auteur ou committer. Donc, si vous avez besoin d'afficher une liste des développeurs les plus actifs, vous avez besoin d'une commande:


 $ git shortlog -ns --group=trailer:reviewed-by v2.28.0.. | head -n5
    40  Eric Sunshine
    10  Taylor Blau
     4  brian m. carlson
     2  Elijah Newren
     1  Jeff King


  • Plusieurs instructions --group peuvent être spécifiées au démarrage et utiliser l'option --format. Donc, pour suivre les co-auteurs ou contributeurs, vous devez maintenant spécifier les éléments suivants:


   $ git shortlog -ns --group=author --group=trailer:co-authored-by
   $ git shortlog --format="...helped %an on %as" --group=trailer:helped-by v2.28.0..v2.29.0


  • Si un conflit se produit lors d'une opération de fusion git, l'en-tête du message de validation est désormais entre crochets pour séparer explicitement les données de la validation des messages de diagnostic Git.
  • Les développeurs ont ramené la deuxième version du protocole de communication Git, qui a été désactivé dans la version 2.27. Ainsi, un bug qui entraînait des problèmes de stabilité a été corrigé.
  • L'option "--first-parent" a été ajoutée à la commande git bisect, qui est utilisée pour détecter une révision, pour changer la sélection des commits entre la révision de travail connue et la révision dans laquelle le problème s'est produit.


Vous pouvez voir toutes les innovations ici .






All Articles