Quando usar BRANCH

Bom dia, meu primeiro post no forum.

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.

Valeu,

Bruno

Olá bem vindo !

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.

edit: links interessantes …
http://tldp.org/REF/CVS-BestPractices/html/index.html
http://tldp.org/REF/CVS-BestPractices/html/section1-branchmerge.html
No link acima já fala que algumas das práticas do procedimento que citei não é legal ! :smiley:

Se tiver opção, recomendo o SubVersion, por ser mais atual.

flw e sucesso!
Roger Leite

A explicação do Roger– está ótima. :smiley:
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!

[]'s!
Eduardo

aqui na empresa criamos o branch para desenvolver, e a versão estável fica o head…

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.

Editado: confusão entre CVS e SVN

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.

Opiniões?

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.

HEAD - desenvolvimento

BRANCH - v1--------|
| |–v1Cliente1
| |–v1Cliente2
v2
|---------|
|–v2Cliente1

Valeu pessoal.

[quote]HEAD - desenvolvimento

BRANCH - v1--------|
| |–v1Cliente1
| |–v1Cliente2
v2
|---------|
|–v2Cliente1 [/quote]

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?

Obrigado.
[/color]

Não, todos podem usar o BRANCH criado.

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.

Abraço,
Bruno

[color=darkblue]Valeu!!!
Era isso mesmo, eu não tinha selecionado o Projeto e atualizado os Branches dele.
Agora todos conseguem ver, vlw![/color]