My development team has worked with subversion for quite some time. The way that manage the trunk and branches is as follows:
We (almost) always release from t
Our experience is to clearly differentiate:
Trunk is only for recording stable released version, from which we can branch.
In the "development branch", we can manage important changes, included some which will not end up in the next release (because too complex, not ready in time, dependent on other late developments, ...)
The consolidation branch represents the final steps (note the plural) needed to finalize the release. It happens after a meeting where all the features needed to be delivered are validated.
We only merge into the "consolidation branch" what we are sure to put into production. We go on that branch until the final release.