Our model is a somewhat scaled-down version of how the Git project itself is run. We have one main branch:
In addition, we have:
'master' is stable, it will never be rewound or rebased. Feature branches are typically rebased to 'master' just before they are merged there. In the meantime they may be rebased or rewound as necessary.
As we get more contributors and start having "patch-churn", we will re-evaluate a dev branch, or a three-branch model, like Git. The third branch would be 'pu' (for "proposed update").