Início > Artigos & Tutoriais > Conceitos Básicos de Controle de Versão

Conceitos Básicos de Controle de Versão de Software — Centralizado e Distribuído   (pg. 4 de 6)

Autor: André Felipe Dias. Última atualização em 19/06/2009

4. Sincronização de Mudanças Concorrentes

Uma das responsabilidades do controle de versão é possibilitar o trabalho paralelo e concorrente de vários desenvolvedores sobre os mesmos arquivos, evitando que um sobrescreva o código de outro, o que resultaria no reaparecimento de defeitos e perda de funcionalidades.

Em parte, isto é conseguido através da área de trabalho, que fornece a impressão de que o desenvolvedor é o único dono de todo o projeto. Mas só a área de trabalho não resolve todo o problema. Ainda é necessário um jeito de sincronizar os esforços dos membros da equipe.

A sincronização é feita combinando-se revisões concorrentes em uma única resultante. Essa operação é conhecida como merge (mesclagem) e, apesar de parecer complexa, acontece sem conflitos na maioria das vezes — aliás, essa é a idéia.

As seções a seguir mostrarão como acontece a sincronização do trabalho de dois desenvolvedores nos controles de versão centralizado e distribuído.

Sincronização no Controle de Versão Centralizado

(1) Duas cópias de trabalho são criadas a partir do comando checkout. As duas iniciam no mesmo estado.


(2) Os dois desenvolvedores executam modificações nas suas cópias de trabalho, mas Aline publica antes no repositório.


(3) Roberto tenta publicar suas alterações, mas o controle de versão recusa justificando que as alterações foram baseadas em arquivos desatualizados. No caso, um ou mais arquivos alterados por Roberto já haviam sido alterados por Aline antes.


(4) Na atualização da cópia de trabalho, o controle de versão já mescla automaticamente as revisões.


(5) Após conferir se a atualização e a mesclagem produziram o resultado desejado, Roberto envia as mudanças ao repositório. Enquanto isso, Aline já trabalha em outra tarefa, executando novas alterações.


(6) O commit de Aline é aceito sem problemas pois seus arquivos modificados foram baseados na versão mais recente, isto é, não haviam sido alterados no repositório enquanto Aline fazia suas modificações.

Sincronização no Controle de Versão Distribuído

(1) Roberto clona o repositório de Aline. Agora, ambos partem do mesmo ponto.


(2) Aline e Roberto publicam suas alterações nos seus respectivos repositórios, sem interferir no repositório um do outro.


(3) Roberto sincroniza seu repositório com as revisões publicadas por Aline. Sua área de trabalho não é afetada pela sincronização.


(4) A mesclagem entre as revisões de Aline e Roberto é feita explicitamente na área de trabalho de Roberto através de um comando merge. Enquanto isso, Aline já gera outra revisão no seu repositório.


(5) Após conferir se a mesclagem produziram o resultado desejado, Roberto envia as mudanças ao seu repositório. Paralelamente, Aline publica mais uma vez no seu repositório.


(6) Roberto envia suas revisões ao repositório de Aline, que as combina com o histórico de revisões já existente.

« Anterior |  Próxima » |  1  2  3  4  5  6  | Página única

Cursos relacionados à Gerência de Configuração:

GCS com Trac e Subversion

Curso de Gerência de Configuração com Trac e Subversion



GCS com Trac e Mercurial

Curso de Gerência de Configuração com Trac e Mercurial


Outros artigos & tutoriais

Qual controle de versão você usa?
Nenhum
CVS
Visual SourceSafe
ClearCase
Outro
Subversion
Git
Mercurial