Sempre utilizei o CVS mas somente para controlar histórico de alterações, fazer merge as vezes, quando dois programadores alteram o mesmo arquivo.
Mas estou precisando controlar versões de desenvolvimento, homologação e produção.
Algo como, quando eu fizer um commit eu dizer se essa versão é de desenvolvimento, de homologação ou de produção. Assim quando eu for fazer um checkout do projeto, eu possoa fazer checkout da última versão em produção ou homologação.
Não sei como vocês atualizam o projeto de vocês, gostaria de sugestões e opiniões a respeito.
Obrigado.
Não domino isto ainda, mas o caminho é o seguinte: dá uma olhada (consiga um livro / tutorial) sobre branches e tags (não sei se tem no cvs).
P.S A solução completa para este problema são estratégia + recursos do controlador de versão. A leitura sobre o assunto é chata mas é necessária, não pule linhas nem capitulos nesta leitura.
flws
Eu sei como funcionam os branches e as tags
mas deve ter uma estratégia legal pra utiliza-los, vou tentar procurar um tutorial que fale sobre as estratégias, pois a maioria dos que vejo por ai só explica o que é mas não da idéias de como usá-los de um jeito legal.
Eu tive a idéia de usar branches pra desenvolvimento e homologação, o problema é ter duas partes do sistema em homologação e só uma ter passado, talvez eu tenha que ter N branches diferentes e ir incorporando no branch de produção a medida que forem sendo homologados!
Existem algumas formas diferentes de se trabalhar e qual usar depende da sua situação específica, mas eis uma sugestão:
-
Manter no HEAD (trunk) a sua versão de desenvolvimento mais nova, digamos que seja a 1.0.1.
-
Quando a mesma estiver pronta para os testes, criar um branch de homologação baseado no trunk (HEAD --> R_1_0_1_Homologacao) e fazer o deploy no devido servidor.
-
À medida que seus módulos são homologados, jogar para produção, fazendo o devido controle. Aplicar alterações no branch de homologação (bug fix etc) também no HEAD.
-
Quando as mudanças estiverem todas em produção, renomear o branch R_1_0_1_Homologacao para R_1_0_1_Manutencao, e verificar se o HEAD é afetado quando bugs forem encontrados neste novo branch.
Agora, se você não desenvolve mais de uma versão ao mesmo tempo, nem precisa manter versões antigas, creio que uma solução mais simples poderia ser fazer tudo a partir do HEAD, e quando tudo estivesse em produção criar uma tag como R_1_0_1 ou R_20090101_1730 para indicar uma versão em produção. Manutenções seriam feitas diretamente no HEAD junto com as novas features da próxima versão.
Uma formar pratica, utilize os ambientes separados em databases com servidores desenvolvimento e homologação e projetos versionados com SourceSafe (VSS), centralize uma equipe de publicação de mudanças e chamados para tal publicação em produção, ou tmb em homologação depende da empresa.
Dica: somando ao conhecimento do software de versionamento e ao entendimento dos ambientes estude ITIL Gerencia de mudança, configuração, software e governaça de ti.
Espero te ajudado
marcos_s_silva@hotmail.com