| | Início | Empresa | Serviços | Cursos | Artigos & Tutoriais | Blog | Calendário de Cursos | Clientes | Fale Conosco | |
Autor: André Felipe Dias. Última atualização em 19/06/2009
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.

(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.

(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