Branch, Tag e Tronco(CVS)

Pessoal, sou novato em programação, tou iniciando um estágio em desenvolvimento java em uma empresa. Primeiro tou tendo que aprender CVS. Alguem poderia me explicar com detalhes esses termos usados no CVS(branch, tag, tronco) e como trabalhar com eles.
me enviaram um tutorial para ler sobre CVS, mas de fato ainda continuo com duvidas sobre eles,
li todos mas são muitos conceituais, então não para aprender muito.
Em vez de me mandar ler tutorias, alguem poderia me explicar com as próprias palavras como
trabalhar com esses troços, por exemplo, para que serve o branch, o que é “tagear”.
O quanto puderem ser detalhistas, vai me ajudar bastante, principalmente se me explicarem
usando exemplos.

[quote=gaviao2008]Pessoal, sou novato em programação, tou iniciando um estágio em desenvolvimento java em uma empresa. Primeiro tou tendo que aprender CVS. Alguem poderia me explicar com detalhes esses termos usados no CVS(branch, tag, tronco) e como trabalhar com eles.
me enviaram um tutorial para ler sobre CVS, mas de fato ainda continuo com duvidas sobre eles,
li todos mas são muitos conceituais, então não para aprender muito.
Em vez de me mandar ler tutorias, alguem poderia me explicar com as próprias palavras como
trabalhar com esses troços, por exemplo, para que serve o branch, o que é “tagear”.
O quanto puderem ser detalhistas, vai me ajudar bastante, principalmente se me explicarem
usando exemplos.[/quote]

Realmente não adianta ler manuais quando não se sabe o que é tag ou branch. Ai um dicionario ingles/portugues pode ajudar. Tag é etiqueta. Branch é ramo. (dai a analogia do tronco)

O repositorio CVS não é na realidade 1 só repositorio. existe o repositorio principal , o tronco. Ele é como o default.
Quando vc sincroniza os arquivos é com o tronco que são feitas as comparações.
Conforme os arquivos são alterados eles ganham versões diferentes. Como uns são mais editados que outros, essas versões não batem. Nem deveriam, entenda-se.

Mas às vezes vc quer “fotografar” o estado do seu repositorio. Por exemplo, vc acabou a codificação e mandou para o cliente. Essa é a versão 1.0.0 do sistema. Mas ela contem várias versões diferentes de cada arquivo.
Então vc passa uma etiqueta em todos os arquivos. Essa etiqueta (tag) serve para vc rotular arquivos em um certo momento como pertencendo no mesmo conjunto.
O sistema vai ter erros e vc vai fazer correções. Vai liberar novamente. Ai será a versão 1.0.2 e assim vai.
Se um dia vc precisar do codigo usado na versão 1.0.0. vc pode consultar os arquivos que têm essa etiqueta.

Um outro caso é quando vc liberor o codigo, mas ainda precisa adiconar mais coisas. Um modulo extra, por exemplo. Aqui vc não está lançando a verão 1.0.0 toda. apenas o primeiro pacote. vc sabe que tem que modificar o codigo até À versão 1.0.0 final.
Ou, vc quer construir a versão 2.0 mas não quer estragar a 1.0 porque essa já está rodando no cliente.
Então vc cria um ramo. Uma bifurcação. Ou seja, um copia do repositorio principal tal como ele é agora, mas que vc poderá mudar sem interferir com a outra. Assim vc pode dar manutençaõ na versão 1.0 enquanto esta desenvolvendo a 2.0 sem que o codigo se misture.

básicamente é isso

Putz… esse questionamento caiu como uma luva…

Então Sergio apenas para finalizar, as tags são uma forma de localização da versão do programa, ou seja algo que lhe informa que versão é e outras que vc quer colocar, e o brach é uma atualização do mesmo, mas como a tag da versão antiga está intacta vc pode alterar para uma nova versão sem afetar o cliente… é mais ou menos isso ??? Aaaaaaaa e o tronco é a comparação das duas versões e atualização do programa… correto ???

Segue um artigo bem antigo sobre como usar branch/tag no CVS:
http://www.ddj.com/architect/184404280