Estou com uma dúvida de CVS, acredito que possam me ajudar. Quando uso o Branch?
E sei que é quando vou desenvolver uma nova versão mas, eu crio o novo BRANCH e desenvolvo a parti dele ou crio o BRANCH para uma versão estável e desenvolvo no HEAD.
Você deve usar Branch de acordo com o padrão da empresa/grupo onde trabalha, caso não exista algum, então você deve criar este padrão.
Bom, aqui onde trabalho, o head contém a versão que está em produção no cliente, e o desenvolvimento de novas versões são feitos em branchs. Antes da nova versão entrar em produção é feito um merge do head para o branch, desta maneira as correções feitas no head pós-branch é passado para o branch atual e após a versão do branch entrar em produção, e feito o merge do branch para o head.
Espero que não tenha ficado confuso a explicação acima. 8)
Resumindo, o padrão que usará de head->branch(s), deve ser criado pela equipe de acordo com as necessidades do ambiente.
A explicação do Roger– está ótima.
Só queria acrescentar que prefiro trabalhar com um branch para cada funcionalidade desenvolvida. Fica mais complicado fazer o merge depois, mas acho mais organizado… mas isso vai de cada organização e cada equipe!
Eu uso branches apenas para experimentações com o codigo, o desenvolvimento “de verdade” ocorre no head. Se a experimentação vingar é integrada ao head que depois pode virar tag.
Eu prefiro fazer um branch para toda modificação que precisar de mais de 1 dia para ser realizada. Manutenções rotineiras (com testes rotineiros) estão sempre no trunk.
O que ocorre é que às vezes temos que fazer modificações grandes, mas os clientes ou nossos sites, muitas vezes não podem esperar a gente terminar para corrigir um bug, por exemplo. Agora, uma coisa legal a fazer é usar o git e o git-svn, já que usamos o SVN e não o CVS. Isso porque podemos fazer todas as alterações na nossa máquina, versionando aos poucos, e commitar no SVN apenas quando estiver tudo pronto. Isso diminui os problemas de merge que sempre ocorrem. Mas isso, dependendo do número de pessoas no projeto e estabilidade do núcleo do mesmo, só funciona para 1 ou 2 dias. Depois, fica tão chato quanto o merge.
Agora, vou falar algo que corro o risco de levar pedra, mas é isso aí. Das últimas vezes que fizemos um upgrade de versão, criamos a nova versão no trunk. E abrimos um branch para a versão atual, que por já estar estável, sofre menos alterações. Fizemos isso porque o merge é sempre a coisa mais chata do mundo de ser feito. Não é muito “ortodoxo”, mas tem seus benefícios. O principal é que os desenvolvedores sempre sabem que a evolução está no trunk.
Valeu pelas respostas, achava que existia um padrão fixo, mas acho a opção de brach pra cada versão estável melhor, pois assim posso ter várias versões estáveis e uma em desenvolvimento e posso personalizar a partir da versões estáveis.
Eu utilizo uma metodologia parecida com a que vc descreviu e ela funciona muito, o produto fica muito organizado e facil de gerenciar, se vc puder escolher, recomendo o Subversion com Tortoise, é muito fácil criar branchs, tags e merges.
Pórem nem tudo são flores, essa idéia parece bonita na teoria, mas dependendo do numero de desenvolvedores e do tamanho do projeto, fazer um merge pode te dar uma dor de cabeca bem grande, uma maneira que utilizo para contornar isso é criar um produto parametrizavel (atraves de properties e plugins) para cada usuario, sendo isso configuravel no momento de deploy (atraves de ANT).
Assim, fico com somente com um HEAD e um branch de producao, com a vantagem que qualquer bug que eu corrija para um cliente, jah é automaticamente corrigido para todos os restantes.
[color=darkblue]Opa galera, desculpa fazer uma pergunta no meio de um tópico assim, mas é sobre o mesmo assunto…
Eu estou tentando utilizar branch aqui, até consegui criar, comitar nele e tals…
Mas o branch que eu crio no CVS, não é visto pelas outras pessoas da equipe, elas não tem acesso ao branch que criei.
A dúvida é a seguinte:
Um branch não pode ser utilizado pela equipe? Só o usuário que criou o branch, consegue utilizá-lo?
Provavelmente não está sendo listado, se você usa o Eclipse abra a perpectiva do CVS, selecione o repositório, vá em Branches e com o botão direito “Refresh Branches…” e selecione o projeto que você quer listar o Branch.