My workflow when developing has always been about managing and (to use a rather combative term) discarding patches. When I’m writing code I’m constantly trying to get things into a state where they are ready to commit. Anything that’s in my working tree but can’t be committed either shouldn’t be there or should be better. Once things are committed locally or on a branch it’s the same story with moving them to their upstream. At every stage a diff I’m carrying is a problem since it requires effort to maintain (not just forward porting to keep it working but also things like replicating any global cleanups) and it keeps the environment I’m working in different to that seen by other people using the same system.
I’m not sure if it’s just me or if other people think about things this way.