| ▲ | Meleagris 10 hours ago |
| I recently switched to Jujutsu (jj) and it made me realize that “what comes after Git” might already exist. It turns out the snapshot model is a perfect fit for AI-assisted development. I can iterate freely without thinking about commits or worrying about saving known-good versions. You can just mess around and make it presentable later, which Git never really let you do nicely. Plus there’s essentially zero learning curve, since all the models know how to use JJ really well. |
|
| ▲ | dwb 7 hours ago | parent | next [-] |
| Yes, it’s fantastic. I have a post-tool-use hook for Claude Code to snapshot the repository for every edit. It’s like the built in file history feature but native in my VCS and works for my edits too. Don’t want to froth too much but JJ is my favourite piece of software in a while, and the fact that it’s not VC-funded is a major plus point. |
| |
| ▲ | justincormack 6 hours ago | parent | next [-] | | Its VC funded https://www.sec.gov/Archives/edgar/data/2076429/000207642925... | | |
| ▲ | aseipp 3 hours ago | parent | next [-] | | Jujutsu is not "VC funded". But some of the developers, including me, work at East River Source Control (I worked on Jujutsu before that, too). The majority of the code in the project doesn't come from us -- or Google, for that matter. We don't allow people to approve patches when the author is from the same company, anyway. | |
| ▲ | mi_lk 6 hours ago | parent | prev [-] | | that's a company built on top of Jujutsu, not jj itself | | |
| ▲ | drcongo 4 hours ago | parent [-] | | If I remember correctly, jj is one guy who works at Google. Which presents a separate worry, which is that one day, when jj gets popular enough, Google will consume it, make it shit, change the name of it every six months and then shut it down. | | |
| ▲ | aseipp 3 hours ago | parent | next [-] | | jj is not "one guy who works at Google" and the vast majority of submitted code comes from non-Google developers. Even if Google were to stop developing jj (they won't) the project would be healthy and strong. There's some legal annoyances around e.g. CLA which was a result of being a side project of Google originally. Hopefully we'll move through that in due time. But realistically it's a much larger project at this point and has grown up a lot, it's not Martin's side project anymore. | |
| ▲ | urschrei 3 hours ago | parent | prev [-] | | That hasn't really been the case for a while imo: Martin works at Google and is paid to work on jj (there are also other Google employees who contribute, not sure whether they're paid to). jj is in use (wide use? No idea) alongside Google's internal tool (piper) with which it can interact (and with which it has some features in common) because jj has a pluggable backend architecture. While I hate to engage in speculation, tell spooky stories, or screech at people about the evil CLA you have to sign in order to contribute, my personal opinion is that if Google were ever to start throwing their weight around, the project would be forked in short order and development would continue as normal – it has momentum, plenty of non-Google contributors, and a community. It's also not a product per se, though as we're about to find out, you can certainly build products on top of it – that probably makes it less likely for its current home to suddenly become proprietorial about it. (hi Andy!) | | |
| ▲ | drcongo 3 hours ago | parent [-] | | Good points. I had a horrible vision of a git -> GitHub -> Microsoft -> GitHub-on-Azure style pipeline but yeah, I think there's enough good people involved around jj that your vision is probably more likely. Also, hi Steph! |
|
|
|
| |
| ▲ | eproxus 2 hours ago | parent | prev [-] | | Can you expand on this? How do you achieve it? Just a WIP JJ commit after every change or something more clever? | | |
| ▲ | Meleagris 14 minutes ago | parent [-] | | In .claude/settings.json you can trigger shell commands on events like SessionStart, Stop, PreCompact, and PostToolUse [1]. I have all of them run `jj status`, because jj snapshots the working copy every time it's invoked. You can have Claude write the hooks, but mine is: `[[ -d .jj ]] && jj status >/dev/null 2>&1; exit 0` [1] https://code.claude.com/docs/en/agent-sdk/hooks |
|
|
|
| ▲ | zelphirkalt 5 hours ago | parent | prev | next [-] |
| What's the difference between "snapshots" and git commits? In my mind a git commit is already a snapshot of the repo and the changes one staged.
In what way can you move around more freely than what one can do with magit, deciding for files, hunks, or even single lines of code, whether or not they get staged and committed? |
| |
| ▲ | zarzavat 4 hours ago | parent [-] | | Technically, nothing. But psychologically git commits represent a unit of completed work, whereas with AI agents what's needed is a kind of agent-wise undo history such that you can revert back to the state of the repo 1 minute ago before Claude did an oopsie all over your repo. You can definitely use git as a backend for building such a system, but some extra tooling is necessary. | | |
| ▲ | gonzalohm 2 hours ago | parent | next [-] | | Just create a new branch before you implement new features and if the agent messes up don't merge the branch. That way you get the best of both worlds. The buggy code is still there in case it's needed but it's not in the main branch | |
| ▲ | skydhash an hour ago | parent | prev [-] | | > You can definitely use git as a backend for building such a system, but some extra tooling is necessary Is it? There’s the stash for storing patches, the index for storing good hunks, branching for trying out different experiments. You can even use worktree if you want separate working directory especially when there will be changes in the untracked files. Git has a lot of tooling for dealing with changes, directly or at the meta layer. |
|
|
|
| ▲ | RickS 7 hours ago | parent | prev | next [-] |
| I gotta say, jj was not something that interested me before, but that's a compelling pitch. |
|
| ▲ | orbifold 9 hours ago | parent | prev | next [-] |
| is there a jj hosting service? |
| |
| ▲ | ajkavanagh 7 hours ago | parent | next [-] | | GitHub. Jujutsu has changed how I work with git. Switching tasks is just "jj edit <change>" or "JJ new <change>". The only thing it can't do properly is git worktrees (it doesn't replicate the .git dir to the worktrees, breaking tooling that relies on git) but there is a (old) issue relating to it. Not sure on the priority, though. Anyway, YMMV, but I love it. | |
| ▲ | colinmarc 7 hours ago | parent | prev | next [-] | | I know of one: https://lubeno.dev | |
| ▲ | bkolobara 7 hours ago | parent | prev | next [-] | | We are working on something https://lubeno.dev | | |
| ▲ | Vinnl 2 hours ago | parent [-] | | Looks like still a bit early for me, but if you add an RSS feed to your blog, I would at least be reminded to check it out again later :) |
| |
| ▲ | pzmarzly 7 hours ago | parent | prev | next [-] | | https://tangled.org/ supports many jj features, but they seem to only offer public repos. | |
| ▲ | pkulak 7 hours ago | parent | prev | next [-] | | We use GitHub at my work. And I think I’m the only one using JJ. | |
| ▲ | imron 9 hours ago | parent | prev | next [-] | | Any service that hosts git? | |
| ▲ | boxed 7 hours ago | parent | prev [-] | | Isn't jj git compatible so you can just use github? | | |
|
|
| ▲ | dagurp 5 hours ago | parent | prev | next [-] |
| The biggest problem with Jujutsu is the name. I would love to hear a Swedish person try to pronounce it. |
| |
| ▲ | aabhay 4 hours ago | parent [-] | | Its a backronym (or whatever you call it) that cones from the actual name, “jj”, which itself comes from the ease of typing jj on a keyboard |
|
|
| ▲ | Imustaskforhelp 6 hours ago | parent | prev | next [-] |
| I was doing something with jj snapshots with AI now that you have mentioned. I will admit, I didn't know jj but I wanted snapshots so I used it, so then when AI made some changes and kept on going and I wanted to go back to a particular change and I used ai to do that. It was actually really frustrating. To the point that I think I accidentally lost one of the good files within the project and I had to settle on good-enough which I had to try to get for hours to that particular point. My point feels like I should either learn jj properly to use it or to at this point, just ask AI agents to git commit. Another point but I was using ghostty and I had accidentally clicked on the title bar and somehow moved the folder to desktop, I wasn't thinking the most accurately and I just decided to delete it thinking that it must have copied it rather than moved it. (Also dear ghostty why do you make it so easy to move folders, it isn't the best of features and can lead to some honest errors) My face when I realized that I have deleted the project: Anyhow decided to restore it with ~/Trash but afterwards realized that the .git/.jj history is removed because it deletes hidden folders (from my understanding) so I definitely lost that good snapshot. I do have the binary of the app which worked good but not the source code of it which is a bit frustrating These were all just an idea of prototyping/checking how far I can move things with AI. Yeah so my experience for that project has been that I could've even learnt a new language (Odin) and the raylib project to fix that one specific bug in lower time than AI which simply is unable to fix the bug without blowing the whole project in foot. I think the takeaway is to have good backups man. I mean I was being reckless in this project because I had nothing to lose and was just experimenting but there have been cases where people have lost databases in prod. So even backups should be essential if you find any source code which is good to be honest. I am sure you guys must have lost some source code accidentally which you have worked upon, would love to hear some horror stories to hopefully know that I haven't been the only one who has done some mistake and to also learn something new from these stories. (I am atleast happy in the sense that I learnt the lesson from just an tinkering thing and not something truly prod) |
|
| ▲ | rimliu 6 hours ago | parent | prev [-] |
| "I can iterate freely without thinking". Vibecoding moto. |