Makina Blog
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 19 au 20 novembre 2024
Voir la formationActualités en lien
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.
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
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é.