Jujutsu (jj
pour faire court) est un système de versionnement de fichiers compatible avec Git à l’utilisation simplifiée, tout en étant aussi (voir plus) puissant.
Il reprend une bonne partie des concepts et idées de Git, Mercurial et d’autres, mais propose une utilisation simplifiée en revoyant les bases d’ergonomie, d’utilisation et de fonctionnement. Par exemple :
- Il n’y a pas de question d’état “pas commité / staging / commité”. Chaque fichier est automatiquement ajouté au “commit de travail”
- Pour faire un commit, on choisit précisément les modifications du commit de travail, le commit est crée, et le “commit de travail” avance
- L’état du dépôt entier est enregistré avant chaque opération faite avec
jj
. Il est ainsi possible d’undo/redo de n’importe quand vers n’importe quand.
- La résolution de conflits est automatiquement appliquée aux commits descendants. Ansi, il est possible de merge/rebase quand on veut, et de gérer les conflits quand on veut - potentiellement 10 commits plus tard. Le conflit sera fixé là où il est apparu.
- Les rebases sont automatiques. Par exemple, supprimer un fichier qu’on ne voulait pas commit se fait très simplement : il suffit d’éditer le commit en question, et tous les commits suivants seront mis à jour automatiquement. Même si il y a des conflits.
- C’est entièrement compatible avec git. Les commits ressemblent à des commits fait avec git, ça peut push et pull d’un dépôt git, etc.
Une vidéo de présentation de l’outil est disponible sur youtube ici (20 minutes). Ils ont une page d’avis ici (anglais).
Je l’avais utilisé sur un petit projet personnel quand il avait été annoncé. Après un moment d’adaptation, on s’y fait très bien.