The OP describes more or less the way Linux uses git.
The OP describes more or less the way Linux uses git.
My experience lies a little bit with the kernel workflow, but heavily with the Openstack workflow, which has large codebases as well.
Both workflows differ from the nvie.com workflow by not needing a 'develop' branch and as a result, needing less merges.
Both Openstack and the Linux kernel use 'master' for development. In the kernel case, changes are reasonably well tested and vetted before they hit 'master' by the use of maintainer branches.
In Openstack, all changes get gated through a variety of unit, functional and integration tests, so they are reasonably well tested as well.
AFAICT, feature and release branches work the same in all three workflows.
I guess both Openstack and the Linux kernel care less about hotfixes since neither run production systems, only their customers do.
In my capacity running a production Openstack system, we apply hotfixes to our release branch and then deploy it from there.
I guess I just really dislike all of the merging that happens in the nvie.com workflow and the extra 'develop' branch as a result. It seems unnecessarily complicated.
The official kernel mirror on github[1] does not have any of these extraneous branches, and, unsurprisingly, makes good use of the tagging ability built into git.
In fact, the kernel developers prefer[2,3] that feature branches are always based on a known working state if possible, rather than some arbitrarily moving branch, be it called master or develop. That said, the master branch of the linux kernel is, by no means, relegated to only having merge commits from feature branches that correspond to releases.
1. https://github.com/torvalds/linux 2. http://lwn.net/Articles/328436/ 3. http://lwn.net/Articles/328438/