3 ms·
I don't really buy the commutative patch thing either (yet!), but I'm willing to believe that it's because I'm so happy to `git rebase` all the time, but also b
by cryptonector 3y ago
I don't really buy the commutative patch thing either (yet!), but I'm willing to believe that it's because I'm so happy to `git rebase` all the time, but also because I have a tool for fast rebasing across many commits[0].
> The solution that he writes up is basically "git merge" and part of the reason that we have such a bad time with git is that the industry largely standardized on "git rebase", [...]
I wish. So many people still use `git merge` workflows!
> No git rerere: rerere is a hack to try to make rebase pretend that it doesn't drop usable merge information on the floor, if you stop imposing rebase on yourself you don't need the rerere hack.
Whether you cherry-pick (rebase) or merge, you still only commit the conflict-resolved state. Merge commits document what were the two HEADs you conflict-resolved, but so what, if you lose the merge commits at upstream integration time no one loses anything useful.
I've worked on very large systems using rebase workflows. I have written about that many times here on HN in the comments. Rebase workflows are definitely far better than merge workflows.
Perhaps the Jujutsu approach to rebase (automate it!) is the right solution for all those who can't stand rebasing.
[0] https://gist.github.com/nicowilliams/ea2fa2b445c2db50d2ee6509c3526297 https://gist.github.com/nicowilliams/ea2fa2b445c2db50d2ee650...
- adastra22 3y agoThank you. I’ve lost months of my life to rebasing large patch sets against an actively maintained upstream. Your tool looks like it will save me a lot of gray hair.
- cryptonector 3y agoYou're welcome! I had to rebase a patch to PG across thousands of upstream commits after having left it alone for a year+, and it was very painful going until I talked to @vdukhovni about it, and he had this tool, which was `slowrebase` at the time, and we improved it to do a sort of bisection approach to rebasing. That made the rebase I had to do go real fast! I never had to re-resolve the same conflicts using this script.
- pabs3 3y agoMore options: https://github.com/CTSRD-CHERI/git-mergify-rebase https://github.com/CTSRD-CHERI/git-mergify-rebase https://github.com/mhagger/git-imerge/ https://github.com/mhagger/git-imerge/ https://github.com/brooksdavis/mergify/ https://github.com/brooksdavis/mergify/
- pabs3 3y agoA few more implementations of the bisect-rebase idea: https://github.com/CTSRD-CHERI/git-mergify-rebase https://github.com/CTSRD-CHERI/git-mergify-rebase https://github.com/mhagger/git-imerge/ https://github.com/mhagger/git-imerge/ https://github.com/brooksdavis/mergify/ https://github.com/brooksdavis/mergify/