website/articles/jujutsu/slides.md
2025-02-19 15:39:30 +01:00

132 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
marp: false
theme: gaia
footer: '**Fabien Freling** - 2025-02-17'
paginate: true
---
<style>
section::after {
content: attr(data-marpit-pagination) '/' attr(data-marpit-pagination-total);
}
</style>
<!--
_class: lead
-->
# 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)
<revision id> <author> <date> <branch> <commit id>
- @ 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
---
<!--
_class: lead
-->
## 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)