Programação de Equipe com CVS

No ambiente de programação de equipe do CVS (Concurrent Versions System), os membros de equipe executam todo seu trabalho em seus próprios Workbenches, isolados dos outros. Eventualmente, eles desejarão compartilhar seu trabalho. Eles fazem isso através de um Repositório do CVS.

Ramificações

O CVS utiliza um modelo de ramificação para suportar vários cursos de trabalho que são relativamente isolados uns dos outros mas ainda altamente interdependentes. As ramificações são onde uma equipe de desenvolvimento compartilha e integra o trabalho em andamento. Uma ramificação pode ser como uma área de trabalho compartilhada que é atualizada por membros da equipe à medida que eles fazem alterações no projeto. Esse modelo permite aos indivíduos trabalhar em um projeto em equipe do CVS, compartilhar seu trabalho com outros durante a realização de alterações e acessar o trabalho de outros durante o desenvolvimento do projeto. Uma ramificação especial, mencionada como HEAD, representa o curso principal de trabalho no repositório (muitas vezes HEAD é referido como o tronco).

Compartilhando trabalho

Enquanto os membros das equipes produzem novo trabalho, eles o compartilham consolidando essas alterações na ramificação. De forma semelhante, quando desejam obter o trabalho mais recente disponível, eles atualizam seus espaços de trabalho locais para as alterações na ramificação.  Assim, a ramificação está constantemente sendo alterada, avançando conforme os membros de equipe submetem novo trabalho.

A ramificação efetivamente representa o estado atual do projeto. Em qualquer ponto, um membro da equipe pode atualizar os espaços de trabalho da ramificação que possui e saber que eles estão sendo atualizadas.

Interação com Ramificações e Workbenches

Modelo de Equipe Otimista

O CVS fornece dois recursos importantes requeridos para trabalhar em uma equipe:

A manutenção do histórico é importante para que cada um possa comparar o trabalho atual com os rascunhos anteriores, reverter para o trabalho mais antigo que for melhor e assim por diante. A coordenação do trabalho é essencial para que exista uma definição do estado atual do projeto contendo o trabalho integrado da equipe. Essa coordenação é fornecida através do modelo de ramificação.

Um modelo otimista é um modelo em que qualquer membro da equipe pode fazer alterações em qualquer recurso ao qual esse membro tenha acesso.  Como dois membros da equipe podem consolidar na ramificação as alterações para o mesmo recurso, poderão ocorrer conflitos os quais precisarão ser resolvidos. Esse gabarito é chamado de otimista porque assume que os conflitos são raros.

Fluxo de Trabalho Recomendado

Geralmente não existem recursos isolados; de forma geral, eles contêm dependências implícitas ou explícitas de outros recursos.  Por exemplo, as páginas da Web possuem links para outras páginas da Web e o código fonte possui referências a artefatos descritos em outros recursos do código fonte.  Nenhum recurso é uma ilha.

Conforme os recursos são consolidados na ramificação, essas dependências podem ser afetadas. Assegurando-se de que a integridade das dependências é importante porque a ramificação representa o estado atual do projeto: em qualquer ponto, um membro da equipe poderá pegar o conteúdo da ramificação como base para novo trabalho.

Portanto, o fluxo de trabalho ideal é aquele no qual a integridade da ramificação é preservada.

Fluxo ideal enumerado

O fluxo de trabalho ideal prossegue da seguinte maneira:

  1. Inicie a atualização. Antes de iniciar o trabalho, atualize os recursos no espaço de trabalho com o estado atual da ramificação. Se tiver certeza de que não haja trabalho local pelo qual esteja interessado, a maneira mais rápida de manter-se atualizado será selecionar os projetos nos quais estiver interessado na ramificação (ou HEAD) e selecionar Registrar Saída (ou Substituir por > Último do Repositório se os projetos já existirem localmente). Isso irá sobrepor os recursos locais por aqueles da ramificação.

  2. Faça as alterações. Trabalhe localmente no Workbench, criando novos recursos, modificando os existentes, salvando localmente durante o trabalho.

  3. Sincronize. Quando estiver pronto para consolidar seu trabalho, sincronize-se com o repositório.

    1. Atualize. Examine as alterações de entrada e adicione-as ao Workbench local. Isso permite determinar se há alterações que podem afetar a integridade do que você está prestes a consolidar. Resolver conflitos. Teste novamente, execute verificadores de integridade (por exemplo, verifique se há links de hipertexto interrompidos, assegure-se de que o código seja compilado e assim por diante).

    2. Consolide. Agora que você está certo de que as alterações estão bem integradas com o conteúdo de ramificação mais recente, consolide as alterações na ramificação. Por segurança, repita a etapa anterior se houver novamente novas alterações de entrada.

Naturalmente, esse é um fluxo de trabalho ideal. Sob determinadas condições você pode ficar seguro de que as alterações de entrada não o afetarão e escolher consolidar sem atualização. Entretanto, os membros de equipe deverão fazer o possível para seguir um fluxo semelhante ao mencionado anteriormente a fim de assegurar-se de que a integridade da ramificação não seja comprometida acidentalmente. 

Você pode localizar mais informações no CVS no endereço https://www.cvshome.org.

Conceitos Relacionados
Repositórios de CVS
Ramificações
Versões
Sincronizando com um repositório do CVS

Tarefas Relacionadas
Criando uma localização do repositório do CVS

Registrando saída de um projeto de um repositório do CVS
 
Substituindo os recursos no Workbench

Compartilhando um novo projeto utilizando o CVS

Sincronizando com o repositório

Atualizando

Resolvendo conflitos

Mesclando a partir de uma ramificação

Consolidando

Referência Relacionada
CVS