...
O controlde de versoes de sistemas e seus respectivos codigos-fonte é realizado pelo software Subversion, seguindo a estrutura classica de branches, tags e trunk, conforme:
- trunk/: Contem, a qualquer momento, o codigo-fonte compilavel do projeto pronto para ser colocado em homologacao. Todos desenvolvedores podem escrever neste diretorio. Sobre este diretorio é executado o servico de Integracao Continua, gerando em intervalos regulares a ultima versao de desenvolvimento disponivel do projeto.
- tags/: Sao snapshots do projeto, e uma vez criados nao devem ser alterados. Somente podem escrever neste diretorio usuarios do grupo da qualidade (QA). Por padrao, as tags seguem o formato de nome aaaa.mm.dd - versao, onde "aaaa.mm.dd" representa a data de criacao da tag e "versao" um valor representando a versao logica do projeto frente ao gerenciamento do mesmo; por exemplo "tags/2009.12.01 - versao 0.1" ou entao "2009.12.01 - sprint 44". Existem dois tipos de tag, as tags de entrada "V" (version - com codigo de desenvolvimento para analise e homologacao) e tags de saida "R" (release - com codigo homologado que tanto vai para a producao, quanto volta para o desenvolvimento fazendo merge).
- branches/: Sao usados para trabalhos esporadicos para de correcao de codigo de producao ativo ou antigo. Todos podem escrever aqui. Para cada correcao, um branche novo eh criado a partir de uma tag "R" de producao (a ultima ou uma antiga). A correcao (commits) ocorrem aqui ate que o codigo possa ser homologado. Nesse caso, a equipe de QA copia esse codigo para uma nova tag "V" e o ciclo de homologacao acontece, ate que uma tag "R" seja produzida. Se o branche de correcao equivaler ao ultimo codigo de producao (ativo), entao a saida do codigo "R" deve voltar para o desenvolvimento (merge), caso contrario, eh facultativo esse retorno para o desenvolvimento (uma vez que era uma versao antiga do software, talvez esse problema ja tenha sido trabalhado no fluxo trunk/, ou mesmo esse problema nao ocorre nas versoes mais novas ou ativa do sistema).
Fluxo de Promocao de Codigo-fonte de Desenvolvimento ate Producao
...
- Desenvolvimento diario
- Programador realizar checkout da pasta trunk/.
- Programador realizar alteracoes e commits na pasta trunk/.
- Promocao para homologacao (equipe e usuarios acordar momentos adequados, exemplo, a cada 15 dias)
- QA criar tag "v", marcando o incio de revisao de homologacao.
- QA copiar ultima versao da pasta trunk/ para dentro da tag "v".
- QA apagar conteudo da pasta hml/.
- QA copiar conteudo da tag "v" para dentro da pasta hml/
- QA realizar checkout da pasta hml/.
- QA realizar testes unitarios e integrados, alteracoes corretivas e commits na pasta hml/, se necessario.
- QA invocar integracao continua da homologacao.
- Usuario testar funcionalmente aplicacao em ambiente de homologacao.
- Repetir 08 até encerrar o ciclo de correções.
- Usuario protocolar aceite de homologacao.
- QA atualizar arquivo "release-notes" do projeto na pasta hml/.
- QA realizar commit final de revisao de homologacao na pasta hml/.
- Promocao para producao
- QA criar tag "r", marcando o fim de revisao de homologacao.
- QA apagar conteudo da pasta prod/.
- QA copiar conteudo da pasta "r" para dentro da pasta prod/.
- QA comunicar Administrador de nova versao de producao disponivel.
- Administrador realizar deployment de producao.
- Reintegracao de desenvolvimento
- QA realizar checkout da pasta trunk/.
- QA realizar merging da pasta hml/ para pasta trunk/ local.
- QA resolver conflitos na pasta trunk/ local.
- QA realizar commits de resolucao de conflitos na pasta trunk/.
- Programador realizar update na pasta trunk.
REFERENCIAS
http://svnbook.red-bean.com/en/1.0/ch04s04.html#svn-ch-4-sect-4.1![]()
http://daptivate.com/archive/2008/08/28/subversion-best-practices-for-web-applications.aspx![]()
http://svn.collab.net/repos/svn/trunk/doc/user/svn-best-practices.html
(leitura obrigatoria)
https://collaborate.txcorp.com/collaborate/support/best-practices-branching-tagging-and-releasing-using-subversion/
(interessante abordagem para integracao continua)
http://svnbook.red-bean.com/en/1.0/ch04s04.html#svn-ch-4-sect-4.1
(dicas de uso do SVN, com enfase para ressurreicao de artefatos)