#jj is worth learning.
I spent some time learning about the Jujutsu version control tool this weekend - reading and doing tutorials. Then did some simple things in my own repos. In a weekend, I already have a better mental model of JJ's concepts than I do after working with Git daily to weekly for almost two decades. Such good design, and natively supports pushing to Git repos, so you can use it on existing projects.
If you regularly work with source control, it's worth the time to learn:
* The main repo's README (https://github.com/jj-vcs/jj) is an excellent written summary of the project. (and a great example of a software project landing page)
* https://youtu.be/LV0JzI8IcCY?si=foexHoDpYB4euEs_ - a 20 minute video introduction to Jujutsu by the creator.
* https://steveklabnik.github.io/jujutsu-tutorial/ - Steve's Jujutsu Tutorial, spend some time with this guided tour.
* Main docs: https://jj-vcs.github.io/jj/latest/
JJ status update: A couple of weeks in and I’ve switched to JJ as the primary interface to Git repos for both personal and work projects.
I’ve messed things up a few times, `jj undo` fixed things. Love the log view.
Using in “collocated” mode which means git still works. I’ve used that a few times to follow directions which gave git commands. Then kept working in JJ.
Overall, feeling much more fluid about making changes look like I want. Usually ending up with a fewer, more focused commits. No longer adding a config change in with a feature just because it needs it and was more convenient.
Ran into one case where undo didn’t save me. The automatic synching of everything into the repo bit me… I moved a .gitignore change to wrong place in history an accidentally got local work files into the local working repo (but not to the remote).
This is gonna stick. I’m very, very happy with JJ. Feels like a new small accelerating factor added to everything I do with text.
Huge thanks to everyone who has worked on and helped explain it!
@briandorsey@hachyderm.io I've been playing around with this and I agree! jj's been awesome so far!
@briandorsey curious what benefits (as an experienced git user) you're finding using JJ?
I only ask since I'm someone who's only recently started to get the hand of semi basic git procedures, and not really sure if it would be worth it for me
@TheDragon Honestly, I'm also not sure when would be the right time to learn it.
An example: I'm already finding it easy to pause partway through working on something, make another change that I just realized I need (maybe some config), move that change before the stuff I'm currently working on, and then continue. But usually wouldn't reorder things like that in git because I've messed up things like that or rebasing enough times that it feels risky.
So maybe the main jj feature is actually undo. You can undo whatever you last tried, which makes it comfy to experiment. With git, whenever I need to do something I don't regularly do, I have to go look it up and double-check. I've messed up my local repo enough times, and had to reset that I'm extra cautious... which means that in practice, I rarely do anything more than the semi basic git procedures I'm already comfy with.
So... maybe that's an answer? If you notice yourself not making cleanly separated commits because of fear or effort to look things up... it might be worth learning jj then. (and you're using git enough that spending a few hours to make every interaction a little better)
@briandorsey that's actually a *really* helpful response, thanks so much for taking the time to reply!
Given my main usage is with a private repo for my nix config and a personal nixpkgs fork, that actually sounds like it could help me better *update* prior commits when it inevitably turns out I've not quite achieved what the commit message actually intended - making the commit log a *much* more useful resource.
Plus reducing the risk of dangerous actions!
Big thanks again!!
> Ran into one case where undo didn’t save me. The automatic synching of everything into the repo bit me… I moved a .gitignore change to wrong place in history an accidentally ...
My good enough fix (for me) is something like
[snapshot]
max-new-file-size = 10000