--- marp: false theme: gaia footer: '**Fabien Freling** - 2025-02-17' paginate: true --- # Jujutsu ![](./jj-logo.png) --- ## What is it? * New version control software (VCS) * Separation of **frontend** and **backend** * Compatible with git * Slowly replacing git cli at Google (askip) * Aiming for a simpler workflow --- ## No branch, only revisions ![](./jj_02.png) - @ working copy - ◆ immutable - × conflict --- ## Embrace the DETACHED HEAD - No need to be at the tip of a branch - Easy to change the current revision (no rebase step) - Each revision has a scope, you can switch / split / squash - You can modify other branches, not only the current one (there is none) --- ## Immutable revisions - New concept - By default `master` is immutable, sane choice - Clearly express what would create conflict, even local copy cannot change - You can override it (but don't) --- ## No staging area, everything is logged - You need a good gitignore - You can always switch commits without loss - You might want to recreate a "staging" commit --- ## Conflicts are ok - Conflicts are recorded but never stop a rebase - Conflicted commits are annotated - You can safely rebase, deal with conflicts later on - No need to mark as resolved --- ## Branches, bookmarks - Branches (git) = bookmarks (jujutsu) - Optional during dev - Mandatory when pushing - Stick to revision, manual step to update - Tracked bookmarks are updated during fetch - No sync conflict between a local copy and its remote --- ## Back to git? - A way back is always possible - git view gets confused in detached HEAD --- ## Tooling - Battery included - CLI tool for splitting commits - Git tools not compatible --- ## Takeaway - 🤩 Good when dealing with multiple tracks - 😔 Need to explicitely specify branch when pushing commits - Small improvements, not game-changing - 😔 No ecosystem, but it's growing (TUI) - Native backend (not ready yet) would remove a lot of friction --- ## Worth the switch? # ✋ Not yet --- # References - [Official website](https://jj-vcs.github.io/jj/) - [GUI & TUI](https://github.com/jj-vcs/jj/wiki/GUI-and-TUI)