←back to thread

I see a future in jj

(steveklabnik.com)
343 points steveklabnik | 1 comments | | HN request time: 0.242s | source
Show context
oefrha ◴[] No.45677124[source]
I gave jj two honest tries. While first class conflicts is a cool idea, in practice I deal with staging/committing 30x more than conflict resolution, and coming from magit, using jj’s hunk split & select felt like being thrown into stone age. Plus I rebase a lot and get a lot of jj’s benefits from magit’s various rebase shortcuts already, IIRC first class conflicts was the only truly novel thing I didn’t have. For people like me who stage/commit often and judiciously I don’t think jj will beat magit until its hunk selection UX comes close.
replies(7): >>45677310 #>>45677775 #>>45678027 #>>45678524 #>>45678766 #>>45679013 #>>45683613 #
baq ◴[] No.45678766[source]
In jj you aren’t supposed to be even thinking about staging and committing, that’s the mental leap required to get what the fuss is about. Everything is a change and you bookmark a parent (or something further out) as the branch head into which you squash or advance the bookmark to a next ready change.
replies(2): >>45678857 #>>45680611 #
oefrha ◴[] No.45678857[source]
> For people like me who stage/commit often and judiciously

Focus on judiciously: mostly (functionally) atomic commits that are not every tiny change, not largely meaningless time-based snapshots, not Gerrit-style single commits for entire features, etc. I’m well aware of the mental leap you’re talking about, it’s neither hard to understand nor the liberation you might think it is. To achieve what we want to achieve we either need to be able to split, or “commit” with such atomicity that more time is wasted come squash time.* If you don’t get that, totally fine, but then you just don’t belong very much to this very conversation.

* Or we can completely change how we write code…

replies(2): >>45679025 #>>45679168 #
baq ◴[] No.45679168[source]
I’m using jj for almost a year now and I definitely feel much happier whenever I need to rebase a branch or do an octopus merge. It really is liberating in an incremental way that creeps on you in day to day work. Don’t expect a revolution, though.

Small commits are the same small commits in jj as in git, you just split instead of add -p.

replies(1): >>45679713 #
oefrha ◴[] No.45679713[source]
I mean, if you think git add -p is fine then you’re clearly not in the market of magit. And yes, jj split is about as ergonomic as git add -p, IIRC.
replies(2): >>45679991 #>>45680423 #
1. baq ◴[] No.45679991[source]
I don't mean that, I mean any tool that allows you to selectively stage can use the exact same interface to selectively split.