Introduction
Dans le monde dynamique des systèmes de contrôle de version, Jujutsu (jj) a commencé à se faire un nom. Avec sa compatibilité Git, jj promet une manipulation simplifiée des commits et une réécriture de l'historique plus sûre. Mais chez Gradle, un petit détail a freiné son adoption. Spoiler : il s'agit des lignes de fin de fichier sous Windows.
Le Blocage : gradlew.bat et .gitattributes
Pour comprendre notre choix, il faut plonger dans les entrailles d'un dépôt Gradle typique. La plupart incluent le Gradle Wrapper, qui est crucial pour exécuter Gradle de manière cohérente. Parmi ces fichiers, gradlew.bat est essentiel pour les environnements Windows.
Sous Windows, la gestion des fins de lignes est cruciale. gradlew.bat doit être vérifié avec des fins de ligne CRLF pour fonctionner correctement. C'est là que le fichier .gitattributes entre en jeu. Il dicte à Git comment traiter ces fichiers spécifiques :
``plaintext *.bat text eol=crlf ``
Cependant, jj ne lit pas .gitattributes. Donc, il ne peut pas appliquer cette règle essentielle par fichier. Résultat : des problèmes dès l'exécution sous Windows, ce qui est un no-go pour nous.
Pourquoi rester avec git worktree
Malgré ses avantages, jj n'a pas encore atteint la maturité nécessaire en termes de compatibilité avec des outils comme .gitattributes. Pour l'instant, git worktree reste notre outil de choix. Il nous offre la flexibilité de travailler sur plusieurs branches simultanément, tout en respectant les configurations spécifiques à chaque fichier.
Les alternatives : qu'est-ce qui fonctionne ?
Git worktree nous permet de gérer efficacement plusieurs branches sans sacrifier la compatibilité avec nos configurations existantes. Alors que jj offre une approche innovante, pour les projets complexes et multi-systèmes d'exploitation, la compatibilité reste un facteur décisif.
L'avenir de jj chez Gradle
Nous n'avons pas complètement fermé la porte à jj. L'outil a du potentiel, et nous suivons de près son développement, notamment la résolution de l'issue jj-vcs/jj#53. Une fois ce problème résolu, nous pourrions envisager de le réévaluer.
Conclusion
La technologie évolue rapidement, et même un détail apparemment mineur peut influencer des décisions critiques dans un écosystème logiciel. Chez Gradle, nous restons ouverts à l'innovation tout en veillant à ce que chaque changement soit justifié par une amélioration tangible. Discutons de ton projet en 15 minutes.