Qual a melhor forma de utilizar os “ramos” do SVN?
Atualmente estamos utilizando o seguinte: Branch: Versões fechadas - Correções feitas aqui são enviadas para o Trunk Trunk: Versão de Desenvolvimento.
Outra forma que vi foi utilizar o seguinte: Branch: Ramificações para desenvolvimento de novas funcionalidade a versão de desenvolvimento. Tags: Versões fechadas (1.0, 1.1, 1.2 …) Trunk: Versão desenvolvimento estavel. Utilizando CI. Junta os brachs.
Minha duvida é o seguinte:
Ao utilizar a segunda forma, Irei corrigir um erro na versão 1.2, sendo que a 1.3 esta em desenvolvimento. Criarei um novo Branch, corrigirei o problema, atualizarei o trunk com essa revisão e a tag? Posso então remover esse branch? Pois não tera mais utilidade, já que esta integrado com trunk e tag? E a medida que vou integrando os branch das novas funcionalidades tambem vou removendo os mesmos?
Mas isso é muito relativo, vai depender de como é o fluxo do seu desenvolvimento.
Por exemplo,
Vc poderia criar um branch a partir do trunk. Esse branch seria um tipo de release candidate.
Neste caso você consegue continuar produzindo no trunk e estabilizar a versão que será lançada em breve (branch).
Quando estiver estabilizada você gera um tag do branch e, caso necessário, faz um merge do brunch com o trunk.
Se surgir algum bug na versão q está em produção você altera o branch relativo a versão com bug e cria uma nova tag com um incremento em sua revisão tipo v1.0.1
Mas nem sempre ocorre essa versão de estabilização, neste caso pode ser realizada a tag direto do trunk e caso a versão em produção tenha algum bug vc faz um branch, corrige e gera um novo tag e um merge com o trunk.
Como falei, é muito relativo, vai depender muito de como é o seu fluxo aí.
Quando a exclusão, eu prefiro deixar para ter a visão completa do que foi realizado no repositório.