Programação em equipa com CVS

No ambiente de programação da equipa de Sistema de Versões Simultâneas (CVS), os membros da equipa fazem todo o seu trabalho nas próprias Áreas de trabalho, isolados dos outros. Eventualmente, vão querer partilhar o trabalho. Vão fazê-lo através de um Repositório de CVS.

Ramificações

O CVS utiliza um modelo de ramificações para suportar várias formas de trabalho que estão de alguma forma isoladas entre si, masque ainda são bastante interdependentes. As ramificações constituem o local onde uma equipa de programação partilha e integra a continuidade do trabalho. Uma ramificação pode ser encarada como um espaço de trabalho partilhado que é actualizado pelos membros da equipa à medida que fazem alterações ao projecto. Este modelo permite que os indivíduos trabalhem num projecto de equipa de CVS, partilhem o trabalho com outros à medida que são efectuadas alterações e aceder ao trabalho de outros è medida que o projecto evolui. Uma ramificação especial, referida como HEAD, representa o meio principal de trabalho no repositório (HEAD é frequentemente referido como principal).

Partilhar trabalho

Á medida que os membros da equipa produzem novo trabalho, vão partilhar este trabalho ao consolidarem estas alterações na ramificação. Da mesma forma, quando pretendem obter o trabalho disponível mais recente, actualizam os espaços de trabalho locais para as alterações na ramificação.  Assim, a ramificação está em constante alteração, avançando à medida que os membros da equipa submetem novo trabalho.

A ramificação representa de forma eficaz o estado actual do projecto. Em qualquer altura, um membro da equipa pode actualizar os seus espaços de trabalho da ramificação e saber que estão actualizados.

Interacção com Ramificações e Áreas de Trabalho

Modelo de equipa optimista

O CVS faculta duas funções importantes necessárias para trabalhar numa equipa:

A manutenção do histórico é importante para que se possa comparar o trabalho actual com os esboços anteriores, reverter para trabalho mais antigo que esteja melhor e assim por diante. A coordenação do trabalho é essencial de forma a que exista uma definição do estado actual do projecto, contento o trabalho integrado da equipa. Esta coordenação é facultada através do modelo de ramificação.

Um modelo optimista é onde qualquer membro da equipa pode efectuar alterações a qualquer recurso a que tenha acesso.  Visto que dois membros da equipa podem ser consolidados para as alterações da ramificação no mesmo recurso, podem ocorrer conflitos e têm de ser corrigidos. Este modelo é designado como optimista porque se assume que os conflitos sejam raros.

Fluxo de trabalho recomendado

Normalmente, os recursos não existem isolados, mas contêm dependências implícitas ou explícitas noutros recursos.  Por exemplo, as páginas Web têm ligações a outras páginas Web e o código fonte tem referências a artefactos descritos noutros recursos de código fonte.  Nenhum recurso é uma ilha.

À medida que os recursos são consolidados para a ramificação, estas dependências podem ser afectadas. É importante assegurar a integridade das dependências porque a ramificação representa o estado do projecto actual: em qualquer altura um membro da equipa pode utilizar o conteúdo da ramificação como a base para novo trabalho.

Assim, o fluxo de trabalho ideal é aquele em que é preservada a integridade da ramificação.

Fluxo ideal enumerado

O fluxo de trabalho ideal procede da seguinte forma:

  1. Iniciar renovação. Antes de começar a trabalhar, actualize os recursos no espaço de trabalho com o estado de ramificação actual. Se tiver a certeza de que não tem trabalho local que lhe faça falta, a forma mais rápida de se actualizar é seleccionar os projectos em que está interessado na ramificação (ou HEAD) e seleccionar Dar saída (ou Substituir por > Último do Repositório se os projectos já existirem localmente). Esta acção irá substituir os recursos locais pelos da ramificação.

  2. Efectuar alterações. Trabalhe localmente na sua área de trabalho, criando novos recursos, modificando existentes, guardando localmente à medida que avança.

  3. Sincronizar. Quando estiver pronto para consolidar o trabalho, sincronize com o repositório.

    1. Actualizar. Examine a entrada de alterações e adicione-as à área de trabalho local. Irá permitir-lhe determinar se existem alterações que poderão afectar a integridade do que está prestes a consolidar. Resolver conflitos. Volte a testar, execute verificadores de integridade (por exemplo, verifique a existência de ligações de hipertexto quebradas, assegure as compilações de código e assim por diante).

    2. Consolidar. Agora que tem a certeza que as alterações estão bem integradas com os conteúdos mais recentes da ramificação, consolide as alterações à ramificação. Para ser prudente, pode repetir o passo anterior caso exista nova entrada de alterações.

Claro que se trata de um fluxo de trabalho ideal. Sob determinadas condições, poderá ter a certeza de que a entrada de alterações não o afecta e optar por consolidar sem actualizar. Contudo, em geral, os membros da equipa devem fazer um esforço para seguir um fluxo semelhante ao acima descrito, por forma a assegurar que a integridade da ramificação não fica acidentalmente comprometida.  

Pode encontrar mais informações sobre CVS http://www.cvshome.org.

Conceitos relacionados
Repositórios de CVS
Ramificações
Versões
Sincronizar com um repositório de CVS

Tarefas relacionadas
Criar uma nova localização do repositório de CVS

Dar saída de um projecto de um repositório de CVS
 
Substituir recursos na Área de Trabalho

Partilhar um novo projecto utilizando o CVS

Sincronizar com o repositório

Actualizar

Resolver conflitos

Intercalar de uma ramificação

Consolidar

Referência relacionada
CVS