4 ms·
I loved using Magit. It’s awesome. But these days, I’ve moved on to jujutsu, a git-compatible version control system with much better primitives than git. If
by tcoff91 1y ago
I loved using Magit. It’s awesome.
But these days, I’ve moved on to jujutsu, a git-compatible version control system with much better primitives than git.
If you haven’t tried jj, I highly recommend it. The first-class conflicts and powerful but simple primitives for editing the commit graph are amazing.
It makes stacking branches an absolute breeze compared to git. And since it is git compatible nobody on your team has to change how they work.
- johnisgood 1y agoI really want to use something like Darcs or Pijul, but Pijul is not ready yet, AFAIK.
- notnmeyer 1y agoany advice on learning jujutsu? i keep bouncing off tutorials and blog posts about it. i’ve had a difficult time trying to map the github-centric branch-based workflow to jj. i’m sure part of the problem is “don’t try to use it like git”, but i haven’t gotten to the aha moment where it clicks.
- stouset 1y agoYou can 100% use it with that workflow, and there is no problem in doing that. You could use other workflows but those are things you can pick up as you gain more familiarity. What I would focus on is what it enables you to do that’s hard in git: editing and revising commits that you’re iterating on, extracting out a large block of work into smaller commits, or splitting unrelated work out into a separate branch without needing to do a bunch of stashing, jumping around between branches, rebasing, etc. Hell, even just being able to switch branches without having to do a wip commit or mess around with the stash is worth the price of admission to me. And having all of my work tracked during a long rewrite even if I don’t think to make checkpoint commits along the way. But yeah, I’d 100% focus on what new superpowers you can add to your existing workflow before trying to actually change your workflow.
- tcoff91 1y agoJust dive in and force yourself to use it. Keep the branch based workflow until you are more comfortable with the tool. Then try more exotic workflows. jj git fetch to pull upstream main. jj rebase -d main to rebase your branch on main As you add commits to your branch jj bookmark move to update the branch then jj git push -b branchname to push it to remote Also I highly recommend a couple neovim plugins: hunk.nvim for splitting commits and jjdiffconflicts.nvim for resolving conflicts.
- stouset 1y agoYep. Having made the switch, I now see git (as a user-facing VCS) as a dead end. It’ll take awhile for people to switch, but I think it will happen eventually. Invisible git compatibility means we don’t have to get everyone to switch all at once, and the benefits of primitives more aligned with the mental model of what we’re trying to do are undeniable.
- cyberpunk 1y agoThis is delusional. Sorry, but you’re only shifting git with dynamite at this point.
- johnisgood 1y agoProblem with GitHub is that the VCS is in the name, so they would have to re-brand themselves (which might end up in losing loads of users) before they start supporting an alternative VCS. I agree anyways, replacing Git is or would be a very difficult task in many cases. That said, let us say I have a team of 3 people and we are starting a new project. We can definitely choose something other than Git, like Darcs (or later Pijul). If we use a project management software that only supports git, however, then that would be a very limiting factor. We probably would just continue using git, or use another project management software or I have no idea. I have used Git most of the time ever since I started using VCSs.
- tcoff91 1y agoBut that’s what’s so great about jj vs pijul: it supports git as a backend. So you still get to use GitHub and all the things that go along with git.
- stouset 1y agoGit as a backend (with some amendments) is lovely and brilliant. Git as a front end is legendarily difficult to use. Jujutsu has all the advantages with none of the downsides and—unlike the alternatives—adoption doesn’t need to happen all at once. Every single person who I’ve convinced to give it a meaningful shot has fully converted. That speaks volumes.
- kccqzy 1y agoI yearned for something like jj before I knew of magit. I was very used to the hg way of doing things and so git is a downgrade. But with magit I'm satisfied enough that I haven't felt a need to switch. Going back to typing commands in a terminal felt backwards. And magit makes a lot of things easy, like splitting commits (u on the hunk and then c e c -a c), moving commits from one branch to a new branch (A s), and moving commits from one branch to another (r s). What makes jj better than magit?
- tcoff91 1y agomagit can only be as good as git. jj’s first class conflicts and the way it handles rebase offers a UX that’s not possible with git. Like with jj rebasing a stack of branches is just a single command. In git you would have to rebase the branch at the top and then hard reset each branch pointer one by one. jj’s rebase is just more powerful than git’s. Like it doesn’t just rebase a linear series of commits it rebases merge commits, other sibling branches, etc… it’s absolutely mind blowing. https://ofcr.se/jujutsu-merge-workflow/ https://ofcr.se/jujutsu-merge-workflow/
- Munksgaard 1y agoRebasing a stack of branches in git can also be pretty simple, with --update-refs. There's a good article here: https://andrewlock.net/working-with-stacked-branches-in-git-is-easier-with-update-refs/ https://andrewlock.net/working-with-stacked-branches-in-git-...
- tcoff91 1y agoYeah but with jj it rebases all the like side quest experimental anonymous branches too. In git rebase is a list of commits to be picked. In jj it is just so much more powerful. In git you can’t rebase all 4 parallel PRs you have in flight and the octopus merge that you are working off of that merges them all together. There’s workflows that I do with jj that are just completely impractical with git.
- globular-toast 1y agoI'm a long time magit user and jj is basically just how I just git! At least close enough. I owe most of my git proficiency to magit. I understand how people are confused by just using the CLI. So I'm all for higher level tools like jj. Don't think I could give up the magit interface, though, unless there's something similar for jj?