Essa era uma dúvida minha e também pode ser a sua. O Subversion (SVN) tem uma estrutura recomendada. Criar os diretórios TRUNK, TAGS e BRANCHES na raiz do projeto.

Lembre-se: é uma estrutura recomendada. Isso não quer dizer que você é obrigado a utilizar.

O diretório TRUNK

È onde vão todos os commits do dia-a-dia. Os desenvolvedores enviam suas revisões diretametente para essa pasta.

O diretório BRANCHES

Quando a equipe de desenvolvimento decide que a versão está pronta, uma cópia é feita com o nome da versão (Ex.: 1.0, 2.1 etc.) na pasta BRANCHES. Essa versão é testada exaustivamente, e nada novo é criado. Apenas bugs são resolvidos.

O diretório TAGS

Assim que todos os bugs do BRANCH forem resolvidos, a pasta é copiada para o TAGS. E a versão final é liberada. Nada mais é modificado nessa versão.

Quando criar um BRANCH?

Existem algum sistemas que você pode escolher para o seu projeto:

  • O sistema "sem BRANCHES"
    Nesse sistema, só existe a pasta TRUNK e tudo é comitado lá. É mais simples de utilizar mas possui um grande problema: o sistema pode ficar instável a qualquer momento.
  • O sistema "BRANCH o tempo todo"
    Cada usuário possui seu BRANCH privado, e alguém (possivelmetne o gerente) revisa todos os commits e junta tudo na pasta TRUNK. Não é muito recomendado pois pode gerar muitos confiltos
  • O sistema "BRANCH quando precisar"
    Essa é, na minha opinião, a melhor opção. Apenas quando uma versão está (teoricamente) pronta, é criado um BRANCH. É importantíssimo respeitar dois pontos:
    1. Todos os commits devem ser pequenos, com apenas uma correção de bug, ou apenas uma nova funcionalidade. Nada de juntar uma série de atividades em um commit.
    2. O BRANCH tem que rodar sempre, e sem erros.

     

Saiba mais: http://svn.apache.org/repos/asf/subversion/trunk/doc/user/svn-best-practices.html