La dernière version de Git introduit de nombreux changements visant à améliorer son interface utilisateur tout en réparant deux vulnérabilités importantes.
Comme on le sait, on a récemment démontré la vulnérabilité de l'algorithme de hachage SHA-1 utilisé par Git pour identifier des objets de manière unique aux attaques de collision. Alors que l'équipe Git se prépare à passer à un nouvel algorithme de hachage sécurisé, elle a mis en place un mécanisme pour détecter et rejeter tout objet qui semble avoir été créé dans le but de produire une collision. Cela devrait atténuer dans les faits le risque d'attaques de collision.
Toujours sur le front de sécurité, Git 2.13 corrige également une vulnérabilité affectant tous les serveurs Git qui utilisent git shell
, qui offre un accès shell restreint via SSH aux commandes Git push
/pull
, plus des commandes personnalisées installées dans un répertoire git-shell-commands
. La vulnérabilité a permis à des attaquants d'exécuter potentiellement des commandes shell sur le serveur distant.
Comme mentionné précédemment, Git 2.13 comprend de nombreuses améliorations à son interface utilisateur. En particulier, une fonctionnalité utile à tous les développeurs qui travaillent pour différents projets est la capacité à gérer de multiples identités grâce à des configurations conditionnelles. En bref, les configurations conditionnelles fournissent un moyen d'inclure un fichier de configuration Git basé sur un ensemble de conditions. Par exemple, vous pourriez avoir les directives suivantes dans votre fichier ~/.gitconfig
pour personnaliser votre configuration Git en fonction du chemin d'accès du répertoire où réside le référentiel :
[includeIf "gitdir:~/work/"]
path = .gitconfig-work
[includeIf "gitdir:~/play/"]
path = .gitconfig-play
Plus précisément, cela peut être utilisé pour définir des user
et des email
différents dans .gitconfig-work
et .gitconfig-play
.
La gestion des chemins dans les commandes Git, c'est-à-dire les pathspecs est une autre caractéristique que presque tous les développeurs utilisent et que Git 2.13 modifie quelque peu. Par exemple, si vous souhaitez exécuter un grep sur tous les fichiers d'un type donné dans votre référentiel, vous pouvez écrire :
git grep my_pattern '*.c'
Maintenant, vous pouvez également utiliser des chemins d'accès négatifs, pour exclure des chemins spécifiques des commandes, et les chemins d'accès qui utilisent des attributs, ce qui permet d'inclure des attributs dans la définition de pathspecs. Par exemple :
git grep text_to_search -- src ':(exclude)*.c'
Les autres améliorations notables comprennent :
-
git branch
,git tag
etgit for-each-ref
prennent maintenant en charge l'option--no-contains
, qui peut être utilisée pour sélectionner des balises ou des branches qui ne contiennent pas un commit spécifique, par exemple :git tag -l --no-contains cf5c725 'v[0-9]*' | sort | tail -n 10
L'option
--no-contains
peut être utilisée conjointement avec l'option--contains
pour, par exemple, trouver des branches créées entre deux balises :git branch --contains v2.8.0 --no-contains v2.10.0
-
git stash
prend en charge l'utilisation de pathspecs pour mettre de côté seulement une partie de l'arbre de travail actuel, permettant ainsi plus de contrôle sur ce qui doit être mis de côté. -
Un certain nombre de commandes sont maintenant compatibles avec les sous-modules, y compris
checkout
,grep
etls-files
. Cela signifie qu'elles parcoureront de manière récursive vos sous-modules. De plus,git status --short
affiche plus d'informations sur les sous-modules.
Vous pouvez lire l'intégralité des notes de version pour avoir une vue plus complète des nouveautés de Git 2.13.
Commentaires de la Communauté