July 8th, 2024

Jujutsu: A Next Generation Replacement for Git

Jujutsu, an experimental version control system by Martin von Zweigbergk, offers Git compatibility, simplified commits, effective conflict handling, and features like automatic rebasing. Despite being in active development with some limitations, it shows promise for revolutionizing version control.

Read original articleLink Icon
Jujutsu: A Next Generation Replacement for Git

Jujutsu is an experimental version control system developed by Martin von Zweigbergk, initially as a hobby project in 2019 and now a full-time project at Google. It offers Git compatibility, simplifies commit processes, handles conflicts effectively, and provides features like automatic rebasing and powerful history rewriting. Developers appreciate its potential to streamline workflows, simplify branching, enhance conflict resolution, improve collaboration, and manage history effectively. However, Jujutsu is still in active development, lacking some features, potentially facing performance issues, and having a less mature ecosystem compared to Git. Users can try Jujutsu by installing it through Rust's package manager, maintaining their Git repository intact, and using Jujutsu commands instead of Git commands. Despite its current limitations, Jujutsu shows promise in revolutionizing version control systems for developers seeking efficient and user-friendly tools.

Related

Git: Please Stop Squash Merging

Git: Please Stop Squash Merging

Lucas Seiki Oshiro explains the drawbacks of squash merging in Git, debunking the belief that it condenses changes effectively. He clarifies Git's inner workings and the implications of squash merging.

A Better Merge Workflow with Jujutsu

A Better Merge Workflow with Jujutsu

A new merge workflow using Jujutsu, a modern VCS compatible with Git, introduces The Austin™ Mega Merge Strategy®. It simplifies merge commits, amending commits, and selecting commits efficiently, enhancing collaboration and code review processes with advanced commit graph manipulation.

Sublime Merge

Sublime Merge

Sublime Merge, a Git client by Sublime Text creators, excels in speed, staging options, syntax highlighting, and conflict resolution. Users appreciate its efficiency, simplicity, and seamless GUI to command line transitions.

Jqjq: Jq Implementation of Jq

Jqjq: Jq Implementation of Jq

The GitHub URL hosts the "jqjq" project, an implementation of jq in the jq language. It showcases progress, design, issues, references, tools, and acknowledgments. Inquire for further details.

1JPM: A Maven/Gradle alternative in a single Java file

1JPM: A Maven/Gradle alternative in a single Java file

The project "1JPM" is a Java Project Manager offering an alternative to Maven and Gradle. It is a single customizable Java file for project configuration, eliminating XML or Groovy. Users can integrate it by adding the JPM.java file and executing commands in the terminal. 1JPM treats everything as a plugin, allowing the addition of third-party plugins. It covers essential functions like build, clean, assemble, check, dependencies, help, tasks, and jar, but may lack some advanced features. The project is in early stages, providing basic build capabilities. Users can seek further assistance for details or support.

Link Icon 14 comments
By @donatj - 5 months
One of the bigger things I try to hammer in to a junior developers mind is to be conscious and thoughtful about their individual commits. To basically never just "git add ." whatever might just happen to be different in their work area, but to ALWAYS review the diff and make the commit a logical collection of changes.

With the lack of staging area it really seems like this encourages the exact opposite. Seems like a good way to get secrets as well as just general junk and clutter committed to your repo history.

If I am working on a big project, I will start to commit change sets as parts of the code solidify without committing other less solid changes. That seems pretty basic. I don't want half finished changes forever committed to history.

By @bdcravens - 5 months
While this is just a blog article, which is fine, I think the intended audience isn't sold on being told to run a couple of commands and install a mystery binary. (especially for those not already familiar with the Rust ecosystem and package manager)

The actual project website is here: https://martinvonz.github.io/jj/latest/

The repo is https://github.com/martinvonz/jj

Note: the project author is a Googler, and it appears to be under the umbrella of Google/Alphabet, as a CLA is required: https://martinvonz.github.io/jj/latest/contributing/

By @lifeformed - 5 months
What I want with a new git is first class support for large binary files. It's essential in game dev, and the best solution seems to be git lfs, which has its own problems.
By @viraptor - 5 months
How do people work with jujutsu and hacks/secrets? Having no staging feels like a disaster magnet to me where things that should never be published have a chance to be saved and distributed by accident. I consistently have some temporary workarounds / scripts / credentials / logs hanging around my repos while I work on things. I think I'd have to change my approaches significantly to use this safely.
By @v3ss0n - 5 months
This getting spammed but developers .. they are afraid to change from git . Mercurial was much better than git in workflow and architecture wise and nobody care enough due to GitHub popularity. This will go the same , as well as sapling.
By @masfoobar - 5 months
I have come from various version controls in my life.

I remember CVS during my early Linux days. At work it was SourceSafe and around the 2010 era, worked for companies using TFS or SVN, etc.

Each one of these had there issues. Some had a better relationship with SVN than others. I did not mind it. However, I HATED SourceSafe! Glad to never touch that again!

When distributed version controls started to become a thing, I played with git, mercurial and bazaar before they were common. I liked them all better than SVN. Eventually I worked for a company using Mercurial but it wasn't long before git was the breadwinner and replaced practically everything else.

Personally, the only reason I ended up on git is because is solved the problem of doing local commits. Many times I was not on the internet or local network, but I can commit whenever I like and push when available to do so. This, for me, was a HUGE win!

Now, I dont have a reason to switch to something else. Its not comparable like moving from SVN to git. Could there be some cool or simpler features? Maybe. Regardless I hardly have issues with git overall to cause me to look about.

The only "issue" I have came across with git is its not great for large binary files, or for storing a collection of images, etc. For coding - its awesome.

I guess the only way I will starting considering alternatives is if the git team decide to make terrible choices.

By @wodenokoto - 5 months
I’m as interested in the next git as much as the next guy, but this gives me no idea how I should or could work with jujutsu.

Anonymous branches? How do I get back to my work?

Auto commit of saved files? How do I commit the things I want without leaving all sorts of junk I don’t wanna share in my history?

I have no impression of how this makes anything easier.

By @hakube - 5 months
why does Git need to be replaced?
By @alberth - 5 months
Slightly OT: does anyone know why OpenBSD decided to build their own version of git, as opposed to using jujutsu (or another alternative)?

https://www.gameoftrees.org/

By @pictur - 5 months
Git is already as simple as possible with its own commands. I feel like we are making simple things more complicated with tools like this. If I start using this tool instead of git, I will probably start doing something hacky at some point. I don't want that. I don't want a history that keeps changing and getting weird with the use of rebase/squash. I don't think conflicts are a problem as long as a single history is kept up to date properly with git. The smoother the history, the easier it is to merge.
By @MaximilianEmel - 5 months
How does this compare to Pijul[1]?

[1] https://pijul.org/

By @snthpy - 5 months
I saw a youtube talk on this a year or two ago and it looked promising. I've been waiting to see more people take it up and sing its praises. This is the first HN post I've noticed since then.

Any experiences of anyone trying it out and switching over to it?

By @setheron - 5 months
Honestly nothing of substance here. Would be great to get a first hand account of jj in practice.
By @keikobadthebad - 5 months
stgit...