We are using SVN as our version control system and we are using the below standard layout for our projects.
Tags Branches Trunk
Trunk: -> Trunk will always hold the latest code changes.
Branches: -> When a release is planned a new branch will be created from the trunk and worked upon. Once the same is released it will be tagged.
Tags: -> Now after the release if we notice any issues in the delivered application then we create a new branch from the tags and then it is worked upon. Finally, the changes made will be merged into the trunk. Or sometimes we make the fix on trunk first and then backport it.
Is this the standard approach? or is there any recommended best practice?