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.

Le blog Makina-corpus

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

Outils et bases de données

Git, gestionnaire de versions

A distance (foad) Du 4 au 5 octobre 2021

Voir la formation

Actualités en lien

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
03/07/2020

Webmapping : comparaison des serveurs de tuiles vectorielles depuis Postgres / PostGIS

Un ensemble de serveurs de tuiles vectorielles basés sur la fonction ST_AsMVT() de PostGIS sont disponibles. Makina Corpus vous propose un tour d’horizon des spécificités des différentes solutions.

Voir l'article
28/01/2020

Paralléliser des requêtes avec PostgreSQL

PostgreSQL permet de découper les requêtes pour en exécuter des parties en parallèle. Il faut toutefois en connaître les concepts pour pouvoir en bénéficier au mieux et ne pas empêcher le planificateur de requêtes de le faire.

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus