Let’s say I keep only working tested code in trunk. Each iteration is done in a separate branch.
When the iteration is over I merge the changes back into trunk.
What should I do then?
Today I kill the dev branch, create a tag of the trunk at that given moment of release. Then my idea is to create a branch of that tag if a patch is needed while the next iteration is underway.
Is it better to keep the development branch alive to apply future patches there? I don’t think I like that idea :).
Both workflows are not mutually exclusive and can co-exist: it’s your choice, how to work
Your current workflow (stable trunk, move mayor releases into separate branches (for bugfix releases)) and mark every release with tag is perfectly viable