Tabela de conteúdos

Trabalhando com Merge no subversion

Conhecendo a Solução Copy-Modify-Merge

O modelo Copy-Modify-Merge (Copiar-modificar-fundir) é uma alternativa que permite a dois ou mais usuários trabalharem no mesmo projeto simultaneamente. Com o Copy-Modify-Merge cada usuário se conecta ao repositório e cria uma cópia de trabalho local. Os usuários então trabalham simultaneamente e independente modificando suas cópias de trabalho.

Exemplo

Neste exemplo vamos imaginar que temos dois programadores, Carlos e José, trabalhando no mesmo projeto, eles estão trabalhando simultaneamente cada qual em sua cópia de trabalho local, vamos supor que Carlos salvou a suas alterações primeiro no repositório, mais tarde quando José tentar salvar suas alterações o repositório vai retornar o erro out-of-date que significa que os arquivos estão desatualizados ou seja ocorreram alterações desde a última vez que esses arquivos foram copiados, então José deve pedir ao seu software cliente a ajuda-lo fundir (Merge) as alterações realizadas na sua cópia local com a cópia do repositório. Caso as alterações de José sobrescreverem as alterações de Carlos será gerado conflitos, sendo assim o software cliente deverá sinalizar de alguma forma os pontos conflitantes e José manualmente deverá escolher quais alterações devem permanecer no código fonte.

Implementando a solução com o client Tortoise

Realizando o Merge

Com o Tortoise, a fusão dos arquivos é realizada com o comando update, portanto se um dos usuários tentar salvar as alterações no repositório com o comando commit e receber o erro out-of-date ele deverá recorrer ao comando update para atualizar a sua cópia local e depois que a fusão for devidamente realizada ele poderá salvar a sua cópia atualizada no repositório.

Resolvendo conflitos

Quando as alterações realizadas sobrescreverem as atualizações do repositório resultará em uma situação de conflito e o Tortoise indicará ao usuário quais os arquivos envolvido, a partir dai o usuário deverá manualmente decidir quais alterações devem permanecer no código fonte.

Os conflitos são tratados por arquivo, através da opção “Edit Conflicts”

A tela de edição de conflitos é dividida em três partes;

  1. Theirs : Os dados do arquivo no repositório.
  2. Mine : Os dados do arquivo na minha cópia de trabalho local.
  3. Merged : Fusão entre os dois arquivos.

Os pontos em vermelho são os pontos conflitantes, para definir qual o bloco de comando utilizar no arquivo final, “uma das formas” é selecionar o bloco desejado, clicar com o botão direito e escolher a opção use this Text block.

Após resolver todos os conflitos basta clicar na opção Mark as Resolved