Say I'm maintaining a GPLv3 project on GitHub with a
LICENSE file, code headers and all. Now, a few folks made some code enhancements and sent me a pull-request. Does that automatically mean that they agree to contribute under GPLv3 terms, or, do I have to do make some kind of separate agreement with each contributor? The latter is not only cumbersome, but practically impossible as projects become large. What is the usual practice in this regard for projects like WordPress, Drupal, Debian, Linux kernel, etc.? Do they all make formal agreements with the devs?
I had a look at this recently posted question which explored this same area, but didn't answer this exact question I have.
Most importantly, if today I accept someone's pull-request, can they come back five years down the line saying, "Hey, I didn't intend this to be GPLed all those years ago, so I want to assert my rights now."?