jj-vcs / jj
git clone https://github.com/jj-vcs/jj.git
v0.46.0 · 15d ago
A Git-compatible VCS that is both simple and powerful
+20
stars, 24h · #1,868
+~91
stars, 7 days · #2,389
+~390
stars, 30 days · #2,121
32k
★ total · +0% this week
1.3k
forks · 1.2k open issues
Star history (as recorded here)
LanguageRust
LicenseApache-2.0
Created2020-12-18 (5y ago)
Last pushtoday
Watchers103
OwnerOrganization
Links
- GitHub: github.com/jj-vcs/jj
- Homepage: https://jj-vcs.dev
- Releases · Issues · Hacker News mentions
README excerpt
# Jujutsu—a version control system **[Homepage] • ** **[Installation] • ** **[Getting Started] • ** **[Development Roadmap] • ** **Contributing** [Homepage]: https://www.jj-vcs.dev [Installation]: https://docs.jj-vcs.dev/latest/install-and-setup [Getting Started]: https://docs.jj-vcs.dev/latest/tutorial [Development Roadmap]: https://docs.jj-vcs.dev/latest/roadmap ## Introduction Jujutsu is a powerful version control system for software projects. You use it to get a copy of your code, track changes to the code, and finally publish those changes for others to see and use. It is designed from the ground up to be easy to use—whether you're new or experienced, working on brand new projects alone, or large scale software projects with large histories and teams. Jujutsu is unlike most other systems, because internally it abstracts the user interface and version control algorithms from the *storage systems* used to serve your content. This allows it to serve as a VCS with many possible physical backends, that may have their own data or networking models—like [Mercurial] or [Breezy], or hybrid systems like Google's cloud-based design, [Piper/CitC]. [Mercurial]: https://www.mercurial-scm.org/ [Breezy]: https://www.breezy-vcs.org/ [Piper/CitC]: https://youtu.be/W71BTkUbdqE?t=645 Today, we use Git repositories as a storage layer to serve and track content, making it **compatible with many of your favorite Git-based tools, right now!** However, note that only commits and files are stored in Git; bookmarks (branches) and other higher-level metadata are stored in custom storage outside of Git. All core developers use Jujutsu to develop Jujutsu, right here on GitHub. But it should hopefully work with your favorite Git forges, too. We combine many distinct design choices and concepts from other version control systems into a single tool. Some of those sources of inspiration include: - **Git**: We make an effort to [be fast][perf]—with a snappy UX, efficient algorithms, correct data structures, and good-old-fashioned attention to detail. The default storage backend uses Git repositories for "physical storage", for wide interoperability and ease of onboarding. - **Mercurial & Sapling**: There are many Mercurial-inspired features, such as the [revset] language to select commits. There is [no explicit index][no-index] or staging area. Branches are "anonymous" like Mercurial, so you don't need to make up a name for each small change. Primitives for rewriting history are powerful and simple. Formatting output is done with a robust template language that can be configured by the user. - **Darcs**: Jujutsu keeps track of conflicts as [first-class objects][conflicts] in its model; they are first-class in the same way commits are, while alternatives like Git simply think of conflicts as textual diffs. While not as rigorous as systems like Darcs (which is based on a formalized theory of patches, as opposed to snapshots), the effect is that many form