Le projet open source Git vient de publier la version 2.54 de Git, qui intègre des fonctionnalités et des corrections de bogues provenant de plus de 137 contributeurs, dont 66 nouveaux. Voici un aperçu par GitHub de certaines des fonctionnalités et modifications les plus intéressantes introduites depuis la dernière version : Réécrire l'historique avec l'historique Git, Hooks basés sur la configuration et recompression géométrique par défaut lors de la maintenance.Git est un système de gestion de versions distribué capable de gérer les versions de code source ou de données. Il est souvent utilisé pour gérer le code source par les programmeurs qui développent des logiciels en collaboration. Les objectifs de conception de Git incluent la vitesse, l'intégrité des données et la prise en charge de workflows distribués et non linéaires — des milliers de branches parallèles s'exécutant sur différents ordinateurs.
Comme la plupart des autres systèmes de contrôle de version distribués, et contrairement à la plupart des systèmes client-serveur, Git conserve une copie locale de l'intégralité du dépôt, également appelé « repo », avec des capacités d'historique et de suivi des versions, indépendamment de l'accès au réseau ou d'un serveur central. Un dépôt est stocké sur chaque ordinateur dans un répertoire standard contenant des fichiers supplémentaires cachés afin de fournir des capacités de contrôle de version.
Aujourd'hui, Git est le système de contrôle de version le plus couramment utilisé par les développeurs de logiciels. C'est le système de contrôle de version distribué le plus populaire, près de 95 % des développeurs le citant comme leur principal système de contrôle de version en 2022. C'est l'outil de gestion de code source le plus largement utilisé parmi les développeurs professionnels. Il existe plusieurs services de dépôt Git, notamment GitHub, SourceForge, Bitbucket et GitLab.
Récemment, le projet open source Git vient de publier la version 2.54 de Git, qui intègre des fonctionnalités et des corrections de bogues provenant de plus de 137 contributeurs, dont 66 nouveaux. Voici un aperçu par GitHub de certaines des fonctionnalités et modifications les plus intéressantes introduites depuis la dernière version : Réécrire l'historique avec l'historique Git, Hooks basés sur la configuration et recompression géométrique par défaut lors de la maintenance.
Réécrire l'historique avec git history.
Le projet Git propose depuis longtemps des outils permettant de réécrire l’historique de votre dépôt. git rebase –i est le plus connu, et il est remarquablement flexible : vous pouvez réorganiser, fusionner, modifier et supprimer des commits. Mais cette flexibilité s’accompagne d’une certaine complexité : un rebase interactif opère sur une série de commits, met à jour votre arborescence de travail et votre index au fur et à mesure, et peut vous laisser dans un état de conflit que vous devez résoudre avant de continuer.
Pour les cas plus simples, tout ce mécanisme peut sembler excessif. Si vous souhaitez simplement corriger une faute de frappe dans le message d'un commit datant de trois commits, ou diviser un commit en deux, un rebase interactif fonctionne, mais vous oblige à établir une liste de tâches, à marquer le bon commit pour modification, puis à mener le rebase à son terme.
Git 2.54 introduit une nouvelle commande expérimentale conçue précisément pour ces cas plus simples : git history. La commande history prend actuellement en charge deux opérations : reword et split.
git history reword <commit> ouvre votre éditeur avec le message du commit spécifié et le réécrit sur place, en mettant à jour toutes les branches issues de ce commit. Contrairement à git rebase, elle ne touche pas à votre arborescence de travail ni à votre index, et peut même fonctionner dans un dépôt nu.
git history split <commit> vous permet de diviser de manière interactive un commit en deux en sélectionnant les segments à extraire pour former un nouveau commit parent. L'interface vous semblera familière si vous avez déjà utilisé add en mode interactif via git add –p :
| Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | $ git history split HEAD diff --git a/bar b/bar new file mode 100644 index 0000000..50810a5 --- /dev/null +++ b/bar @@ -0,0 +1 @@ +bar (1/1) Stage addition [y,n,q,a,d,p,?]? y |
Après avoir sélectionné les segments, Git crée un nouveau commit avec ces modifications en tant que parent du commit d’origine (qui conserve les segments que vous n’avez pas sélectionnés) et réécrit toutes les branches descendantes pour qu’elles pointent vers l’historique mis à jour.
Il existe quelques limitations intentionnelles qui méritent d'être notées. La commande history ne prend pas en charge les historiques contenant des commits de fusion, et elle refusera d'effectuer toute opération qui entraînerait un conflit de fusion. De par sa conception, git history est destiné à des réécritures ciblées et non...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.