Accueil / Blog / Métier / 2016 / Les nouveautés de Git 2.9

Les nouveautés de Git 2.9

Par Benjamin Marguin publié 16/06/2016
Il y a trois jours paraissait la version 2.9.0 de Git. Survol rapide des nouveautés.
Les nouveautés de Git 2.9

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.

ABONNEZ-VOUS À LA NEWSLETTER !
Voir aussi
Formation GIT le 28 novembre à Toulouse et Nantes Formation GIT le 28 novembre à Toulouse et Nantes 26/09/2016

Un peu de théorie et beaucoup de pratique pour comprendre le modèle et l’architecture de GIT.

Nettoyer un dépôt Git Nettoyer un dépôt Git 17/03/2016

"Et je ne ferai pas ça tous les jours !"

Git : réconcilier HEAD détaché sur un commit avec une branche Git : réconcilier HEAD détaché sur un commit avec une branche 29/01/2016

Petite astuce #git bien utile, si vous avez perdu le fil.

Avec Git rebase, vos arbres poussent droit Avec Git rebase, vos arbres poussent droit 16/09/2011

Un workflow Git efficace pour les projets à moyen/long terme Un workflow Git efficace pour les projets à moyen/long terme 12/02/2014

Une présentation d'un workflow Git testé et approuvé dans le cadre du développement, du ...