Introduction
La gestion des versions est une discipline essentielle pour tout développeur, mais elle vient souvent avec son lot de défis. Le système de contrôle de version Git, bien que puissant, peut entraîner ce que certains appellent la "fatigue de rigueur Git". C'est ici que Jujutsu entre en jeu, offrant une approche alternative pour gérer les commits de manière plus fluide et intuitive.
Qu'est-ce que la Fatigue de Rigueur Git?
Lorsqu'on développe une grande fonctionnalité, il est crucial de maintenir des commits clairs et concis. Les "bons commits" sont ceux qui permettent une revue facile et une compréhension claire des changements. Cependant, dans la pratique, les développeurs se retrouvent souvent avec des commits désorganisés, où les changements se chevauchent et les erreurs s'accumulent.
Exemple Concret
Prenons un exemple de développement d'une fonctionnalité complexe. Idéalement, on diviserait le travail en plusieurs commits :
- Définir les types
- Ajouter des fonctions de base de données
- Implémenter le CRUD serveur
- Créer l'API client
- Développer l'interface utilisateur
Cependant, en réalité, les commits ressemblent souvent à ceci :
- Définir les types
- Ajouter des fonctions de base de données
- WIP (Work In Progress) code de test
- CRUD serveur
- API et UI client
- Corriger une fonction DB
- Bug UI fix
Cette désorganisation peut rendre la revue de code fastidieuse et complexe.
Jujutsu : Une Solution à la Fatigue
Jujutsu (jj) est un système de gestion de version qui simplifie la navigation entre les commits et l'itération rapide sur des ensembles de changements compartimentés. Il offre des commandes comme jj absorb et jj squash, qui, bien qu'imparfaites, aident à réorganiser les commits.
La Technique de "Laundry"
Une approche efficace est de créer d'abord un historique de commits idéal, puis de réorganiser les changements. Voici comment :
- Créez un commit initial avec
jj new -B messy-first -m 'description'. - Ajoutez les changements suivants et utilisez
jj squash --from messy-first..messy-last --into messy-firstpour fusionner ces commits en un seul. - Utilisez
jj squash -i --from messy-first --into [color]pour trier les changements par type.
Cette méthode permet une flexibilité accrue, réduisant le besoin de maintenir une rigueur stricte tout au long du développement.
Pourquoi Cette Approche Fonctionne?
Contrairement à la méthode jj split, cette technique permet d'organiser plus facilement les modifications dès le début, sans se soucier de l'effet sur la séquence des commits. De plus, en effectuant cette réorganisation à la fin, on gagne en clarté sur l'état final de la fonctionnalité.
Conclusion
La gestion des versions ne doit pas être un fardeau. Avec des outils comme Jujutsu, il est possible de réduire considérablement la fatigue de rigueur Git et de simplifier le processus de développement. Prêt à optimiser votre gestion de versions?
Discutons de ton projet en 15 minutes.