What is Jujutsu (jj)?
mainJujutsu is a version control system (VCS) designed to be easy to use for both new and experienced developers. It abstracts the user interface and version control algorithms from the underlying storage systems.
Key characteristics include:
- Git Compatibility: It uses Git repositories as a default storage layer, making it compatible with existing Git-based tools. Note that while commits and files are stored in Git, higher-level metadata like bookmarks (branches) are stored in custom storage outside of Git.
- Inspiration from other VCS: It incorporates features from Git (speed/efficiency), Mercurial/Sapling (revset language, no explicit staging area, anonymous branches), and Darcs (conflicts as first-class objects).
- Innovative Features:
- Working-copy-as-a-commit: Changes are automatically recorded as commits and amended on every subsequent change, eliminating the need for a staging area or stashes.
- Operation log & undo: Every operation (commits, pulls, pushes) is recorded, allowing you to undo mistakes easily.
- Automatic rebase and conflict resolution: Descendants are automatically rebased when a parent is modified, and conflict resolutions propagate through descendants.