Como organizar seu repositório SVN para facilitar o deploy de produtos

Nos dias de hoje é essencial para qualquer empresa que desenvolva software a utilização de alguma forma de controle de versão (subversion, git, etc) para gerenciar os artefatos produzidos pelas equipes de programadores. No qual duas ou mais equipes, trabalham em um mesmo repositório é possível ocorrer problemas com a geração de releases.
Um dos vários problemas que se pode encontrar é a dificuldade em encontrar uma versão do repositório para iniciar a validação de um produto. Outro problema é a necessidade de colocar uma alteração na versão congelada. Esses problemas aumentam a dificuldade da geração de releases estáveis.
Para solucionar este problema estamos utilizando o processo criação de branches de qualidade e controle de commits nos repositórios de trunk, branch e tags, conforme a imagem abaixo.


A cada marco criamos uma branch que validada pela equipe testes para que seja uma candidata à versão estável e encaminhada para o cliente.
Caso a equipe de testes encontrem problemas na versão em que validam o pacote candidato, a correção é feita no repositório TRUNK e na BRANCH criada para validação. Este processo ocorre até que o pacote seja liberado para o cliente, no qual a BRANCH candidata acaba gerando a TAG (release estável).
Após, a liberação da release estável o fluxo volta ao início, com novas gerações de branches candidatas com o incremento das novas funcionalidades normalmente. Porém, caso encontre um problema gravíssimo que impacte o cliente diretamente, a correção é feita de forma imediata e comitada na TRUNK e na BRANCH da qualidade em que o problema foi encontrado, gerando nova release com o codinome HOTFIX