We do this all the time with kernel development, and is one reason why breaking changes up into tiny pieces is so powerful. We can take the pieces that make sense now, and allow the developer to redo the portions that are not ready yet, instead of having to reject the whole thing if it were done in one single "chunk."
Also note that the TTY/serial portions of this hardware support was already merged through the serial tree because they were independent and didn't affect anyone else.
The big "downside" is that it takes more work on the patch submitter side. But the benefits in the end are almost always more than worth it (easier reviewer time, easier time to track down problems, better development cycle as feedback can be more specific, easier evolution of changes, etc.)
I wrote a whole chapter in the book "Beautiful Code" about how this development model can help create an end result that is almost always better than the initial "huge" submission model. Check it out if you are interested, it should be free online somewhere...
- https://www.oreilly.com/library/view/beautiful-code/97805965...
- https://github.com/stormtrooper96/books/blob/master/software...
So I'll definitely give it a read. Thanks!
This kind of discussion is always of interest to me, I'll check out the book, thank you.
This is true even if the same lines are changed multiple times. It's something you'll learn with experience, but it's also not even close. Break your patches up as much as possible, and everyone will be happier.
How, exactly are you expecting an increase in average patch size to help?
By planning for incremental merges, you ensure that your foundation is solid and acceptable and avoid wasted work.