6 ms·
Now imagine having other branches starting from the commits that just got rebased, also including merge commits. jj handles that just as well.
by yencabulator 14d ago
Now imagine having other branches starting from the commits that just got rebased, also including merge commits. jj handles that just as well.
- 1718627440 14d agogit rebase --onto --rebase-merges ?
- yencabulator 14d agoHow many of those do you need? How do find the correct arguments and git checkouts to do before? Are you sure you remembered to do everything? What if there are merge commits? All of that is automatic with jj.
- 1718627440 14d ago> How many of those do you need? How many do I want? > How do find the correct arguments How do you find the correct arguments for jj? > and git checkouts to do before? Why would I do a checkout before? I don't want to modify the worktree? Maybe I in fact also want to alter the worktree, but that's unrelated. > Are you sure you remembered to do everything? Am I sure I have all my files ordered? No. Does it matter? Also no. Are you sure you have no bug in your commits in JJ? If I want git to alter some set of commit chains, I can tell it to. Actually I never needed to do that, because I don't work on several thousand branches at the same time. I prefer it to not alter unrelated branches automatically, just because some earlier commit changed that is in both. Such things actually undermines the trust I have in a tool, because it does things I haven't told it to do, even if I'm aware it does these things. > What if there are merge commits? Then I resolve them. Merge conflicts occur, because there is some actual conflicting change and often it is also semantic. These don't go a way by changing the VCS. On a theoretic basis, these require outside information(=decisions) that is not there yet. There are more often semantic conflicts, that are not syntactic, then there are the other way around. If you are referring to doing the same merge conflicts again, I can tell Git to resolve them automatically too, but it actually occurred too often, that this is not actually what I want, so I actually dislike that feature now.
- yencabulator 14d agoSeparate git rebase commands. JJ manipulates the whole DAG in singular operations, where as with git you're working one ref at a time. And carefully managing where one ref intersects with another, to rebase those commits only once, reusing the rewritten commits from the previous git rebase. With jj you just say "that thing, over there" and all descendant commits and bookmarks are updated, no matter what the shape is.