404 dead link
I use magit in Emacs in a similar sort of way. Bringing up the magit status page instantly presents a list of hunks I can browse and stage. When committing, there is also an option to “instant fixup” into an existing commit, which you can select interactively from the commit log.
Recent presentation by the developer:
https://www.youtube.com/watch?v=LV0JzI8IcCY
Tutorial by someone else:
First experience with #jj #jujitsu
I tried the equivalent of
git add -p
(jj squash -i
).- I realize that it’s closer to
git add --interactive
(which I find much more complicated and less productive) - I wasn’t able to edit a hunk (like the
e
key ingit add -p
) which I use a lot to split debug statements from real work
I generated a conflict (as I expected)
- I found no way to show the original diff
jj undo
did not worked (I have not been able to undo thejj squash
that introduced the conflict
Very not impressed so far. Fortunately it was a test repo.
I wasn’t able to edit a hunk (like the e key in git add -p) which I use a lot to split debug statements from real work
I don’t think the builtin diff editor can do this, but you can set a different diff editor than the builtin one: https://github.com/martinvonz/jj/blob/main/docs/config.md#editing-diffs
edit: but wait, debug statements? Are they mixed in on the same line as the real code? The builtin diff editor can pick changes per line.
I found no way to show the original diff
jj evolog to show how a single change evolved including the previous commit that didn’t have the conflict yet, if that’s what you mean.
jj undo did not worked (I have not been able to undo the jj squash that introduced the conflict
If you did something afterwards, the operation you undo will no longer be the squash. Look at jj op log to see which one is the correct one to undo.
- I realize that it’s closer to
I just recently gave Jujutsu a go, and I must say, it is a pleasure to work with VCS now. As opposed to Git,
jj
just makes sense and does exactly what I want it to do. No issues whatsoever. And if there is a need (which it is not most of the time), one can just fall back to Git and its ecosystem.