Makina Blog

Le blog Makina-corpus

Les nouveautés de Git 2.9


Il y a trois jours paraissait la version 2.9.0 de Git. Survol rapide des nouveautés.

Cet article se base essentiellement sur la publication de Github annonçant la sortie de la nouvelle version. Pour une liste plus détaillée des fonctionnalités, voir les notes de version.

Exécuter une commande pendant un rebase

Pendant un rebase interactif (git rebase -i) il était déjà possible d'exécuter une commande entre deux commits en ajoutant une ligne avec le préfixe x ou exec puis la commande.

L'ajout de l'option -x permet maintenant d'exécuter une commande après chaque commit d'un rebase.

Cela ouvre plusieurs possibilités, comme lancer un jeu de tests sur chaque commit pour corriger plusieurs défauts (là où un bisect devrait être utilisé pour chaque défaut), de compiler le code pour vérifier la syntaxe ou encore lancer du linting et améliorer la qualité du code : le rebase est en pause si la commande utilisée renvoie une erreur. Un git rebase --continue reprend l'opération à tout moment.

git rebase -x 'make test'

Des diff plus beaux

Cette nouvelle version améliore également le rendu des diff en rendant leur détection et coloration plus intelligentes (par détection des blancs). Par exemple :

diff --git a/exemple.js b/exemple.js
index 7d021b1..1fac7e5 100644
--- a/exemple.js
+++ b/exemple.js
@@ -1,6 +1,10 @@
 function exemple (tab) {

     tab.forEach(element => {
+        action1(element);
+    });
+
+    tab.forEach(element => {
         action2(element);
     });

devient :

diff --git a/exemple.js b/exemple.js
index 7d021b1..1fac7e5 100644
--- a/exemple.js
+++ b/exemple.js
@@ -1,5 +1,9 @@
 function exemple (tab) {

+    tab.forEach(element => {
+        action1(element);
+    });
+
     tab.forEach(element => {
         action2(element);
     });

À activer avec l'option --compaction-heuristic ou la config diff.compactionHeuristic.

Parallélisation

Depuis la version 2.8 de Git il était possible de paralléliser la récupération des sous-modules avec l'option --jobs :

git fetch --recurse-submodules

La 2.9 rend possible d'utiliser cette même option pour les clone et les update de sous-modules :

git clone --recurse-submodules --jobs=4 ...
git submodule update --jobs=4 ...

Et il est possible d'activer cette option par défaut :

git config submodule.fetchJobs X

Et sinon…

  • La commande git describe a été améliorée pour fournir un descriptif de commit (basés sur les tags) beaucoup plus pertinent.

  • Les tabulations sont mieux gérée dans l'affichage des git log (C'est surtout interessant si vous avez l'habitude de faire de l'ascii art ou des tableaux en description de commit)

  • Une nouvelle option core.hooksPath permet de choisir un autre dossier que .git/hooks pour chaque projet, et donc de pouvoir centraliser les hooks d'un ensemble de projet sans avoir à créer de liens symboliques.

Git 2.9 & Ubuntu

Les utilisateurs d'Ubuntu auront sans doute remarqué que la version stable dans les dépôts officiels est la 2.7. Si vous souhaitez passer à Git 2.9 sans attendre, vous pouvez ajouter le ppa disponible sur Launchpad :

sudo apt-add-repository ppa:git-core/ppa
sudo apt update && sudo apt upgrade git

Une erreur, une question, une remarque, n'hesitez pas : @mab_ ou directement par une pull-request.

Formations associées

Formations Outils et bases de données

Formation Git, gestionnaire de versions

Toulouse Du 14 au 15 mai 2024

Voir la formation

Actualités en lien

Image
Encart Article Eco-conception
25/04/2023

Comment compresser son code applicatif de manière efficace avec Nginx et Brotli ?

Dans cet article, nous allons mettre en place un algorithme de compression des données textuelles plus efficace, que celui utilisé habituellement, pour réduire le poids d'une page web.

Voir l'article
Image
Visuel Keycloak
21/06/2022

SSO Keycloak : Ajouter un contrôle d'accès au niveau des flux d'authentification

Découvrez ici comment ajouter un contrôle d'accès grâce au SSO Keycloak
 

Voir l'article
Image
PostgreSQL
20/07/2021

Accéder à sa base de données PostgreSQL depuis QGis ou pgAdmin de manière sécurisée

Comment interconnecter ses outils de travail sans mettre en péril la sécurité du système informatique ? L’objectif de cet article est de présenter une manière sécurisée de connecter QGis ou pgAdmin à une base de données PostgreSQL, afin d’atteindre le meilleur compromis entre praticité et sécurité.

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus