Nouveautés de Git 1.9

Nicola Paolucci
Nicola Paolucci
Retour à la liste

Je sais que vous êtes tous très occupés par vos marathons de pillage sur DayZ, mais soyez un peu patients. Il faut que vous sachiez quelque chose. La dernière livraison de Git (1.9) est sortie !

Voici ce qui a retenu mon attention dans les notes de livraison. Si vous en avez envie, vous pouvez évidemment passer vous-même les notes au peigne fin. Mais laissez-moi vous aider !

Avant de commencer, permettez-moi de vous renvoyer à mes remarques antérieures sur les livraisons 1.8.2, 1.8.3, 1.8.4 et 1.8.5. Vous y trouverez également de chouettes astuces et des goodies.

Pointeurs de mise à niveau pour tout le monde

Comment mettre à niveau ? Les instructions ci-dessous devraient vous y préparer :

  • Saisissez simplement brew update && brew upgrade git si vous utilisez Homebrew sous OSX.
  • Utilisez APT, un truc magique pour les distributions basées sur Ubuntu (je laisse les autres distributions comme exercice pour le lecteur).
  • Exécutez simplement le nouveau programme d'installation sous Windows (le port Windows est parfois ralenti, soyez donc patient si vous ne le trouvez pas immédiatement).

Remarque : dans certains cas, les gestionnaires de package peuvent retarder la distribution de la mise à jour, mais cela n'est pas de mon ressort.

Mises à jour des opérations de réseau : push et fetch

« git fetch --tags » fetche désormais tous les tags supplémentaires

La signification de l'option --tags dans git fetch a changé : désormais, la commande fetche les tags en plus de ce qu'elle fetche sans que l'option soit activée.

Vous pouvez désormais effectuer un « fetch » à partir d'un clone superficiel !

Vous pouvez maintenant faire un fetch des éléments à partir du clone superficiel d'un dépôt – une opération qui vous était jusqu'alors interdite. Remarque : le destinataire devient également un dépôt superficiel avec un historique tronqué.

La sémantique de la commande « git push origin master » standard est plus fiable.

git push origin master ou, plus généralement, toute commande similaire à git push $where $what a été améliorée pour utiliser le même mappage des réfs que git push origin utiliserait pour déterminer quelle ref de la branche origin doit être mise à jour dans la branche locale master. Par exemple, avec cette configuration :

[remote "origin"]
push = refs/heads/*:refs/review/*

Tout comme git push origin pusherait nos branches locales vers les réfs correspondantes dans la hiérarchie refs/review/ au niveau de la branche origin, git push origin master mettra à jour refs/review/master à cet endroit.

Consignation et apparence

Consigner tout sauf le répertoire

La syntaxe négative de pathspec permet à git log ‐‐ . ':!dir' de nous dire Tout m'intéresse sauf le répertoire "dir".

progression difftool

git difftool indique le nombre total de chemins différents, et combien d'entre eux ont été affichés jusqu'à présent, afin de montrer la progression.

Couleurs et formats avec « for-earch-ref »

git for-each-ref ‐‐format=... a appris de nouvelles directives de formatage :

p. ex. « %(color:red)%(HEAD)%(color:reset) %(refname:short) %(subject) »

La commande git log apprise « ‐‐exclude={glob} », plutôt génial !

git log et compagnie ont intégré l'option ‐‐exclude={glob}, pour permettre aux développeurs de dresser la liste de toutes les branches, à l'exception de celles qui correspondent à un modèle en particulier, et ce, grâce à git log ‐‐exclude='_/_' ‐‐branches.

Autres améliorations

git merge-base ‐‐fork-point pour trouver un point de fork adéquat

git merge-base a intégré le mode ‐‐fork-point, qui suit la même logique que celle utilisée dans git pull ‐‐rebase afin de trouver un point de fork adéquat dans les entrées du reflog pour la branche remote-tracking sur laquelle le travail est basé. git rebase suivra la même logique si elle est lancée avec l'option ‐‐fork-point.

Suppression de certaines commandes obsolètes !

Une poignée d'anciennes commandes depuis longtemps obsolètes ont finalement été retirées, à savoir :

repo-config, tar-tree, lost-found et peek-remote

Submodule : « git submodule foreach » est plus robuste

La chaîne de commande attribuée à git submodule foreach $cmd $args est directement ajoutée à l'invite shell, sans évaluation. C'est un revirement incompatible, qui pourrait poser problème aux utilisateurs existants. La différence réside maintenant dans la manière dont ssh effectue l'analyse. En bref, il n'est plus nécessaire de « surquoter » $args.

Conclusions

C'est tout pour l'instant. Dites-moi si vous avez trouvé cette mise à jour utile et restez à l'affût de mes prochains billets. Suivez-moi (@durdn) et l'incroyable équipe @AtlDevtools pour plus d'infos passionnantes sur DVCS.

Prêt à découvrir Git ?

Essayez ce tutoriel interactif.

Démarrez maintenant