Procedimento de Merge

De BIS Wiki
Ir para navegação Ir para pesquisar

O merge de código deve ser efetuado sempre que a programação de algum branch terminar e sua implementação deva fazer parte do ramo de implementação principal. Casos comuns de branches que devem ser fundidos novamente no ramo principal são branches de correção de BUGs de versões já finalizadas, implementações de funcionalidades menores em branches separados do principal enquanto o principal já carrega a implementação de alterações maiores, etc..

Executando o Merge

Para executar o Merge, a primeira ação a realizar é fazer o checkout do código do HEAD do branch de destino. Por exemplo, caso o objetivo seja fazer o merge de uma versão de correção de bug no branch principal "trunk" para que as próximas versões já tenham o problema corrigido, devemos fazer o checkout do HEAD do trunk do projeto.

Em seguida clicamos com o direito no projeto e no menu escolhemos Team -> merge. Na tela de configuração do merge (Abaixo), escolha a opção "Reintegrate a Brach" e deixe marcado a opção de "Perform pre-merge best practices checks", pois ajuda a evitar erros durante a execução do merge, e click em "Next".

Na tela seguinte (abaixo) escolha o branch que deseja re-integrar ao branch local e click em "Next".

Merge só de Tagline
Os merges devem ser feitos sempre a partir de taglines (tags no repositório), pois elas marcam um estágio do código final. Fazer um merge a partir de um ponto qualquer tira o controle de qual era o código original que fora fundido no branch atual.

Na tela seguinte, escolha as opções como mostrado na imagem abaixo para que o Eclipse mostre opções em casos de conflitos durante o Merge. Click em "Finish" para que o eclipse inicie o processo de Merge.

Quanto maior a diferença entre o branch e o código atual maior será a chance de conflitos ocorrerem. Cada conflito deve ser observado um a um e resolver da melhor maneira possível. Em alguns casos pode até ser necessária uma implementação diferente para contemplar ambos os códigos (do branch de origem e do destino). Se tudo correr bem, uma tela será exibida similar a abaixo:

{{nota|Resultado do merge|Lembre-se que o resultado do merge é colocado apenas na máquina do executor do merge. Por isso é importante que antes de começar o Merge deva-se fazer checkout do branch de destino do Merge. O código "fundido" só é colocado na máquina que está executando o merge. Para que o resultado do merge vá para o repositório o executor precisa ainda fazer o checkin de todo o código "fundido". Caso nem tudo tenha saído como esperado ou tenha acontecido algum problema durante o processo, tudo pode ser "cancelado" simplesmente forçando uma atualização com o código do repositório. Essa atualização sobrescreverá o código "mal fundido" com o código inicial (a última versão do repositório) e pode-se começar o processo de merge novamente.