Como fazer Merge de branches no SVN
Conceitos Gerais SVN
O Subversion, ou simplesmente SVN, é uma ferramenta de controle de versão muito poderosa que permite, além do desenvolvimento colaborativo a partir de um repositório único, merge de conteúdo, armazenamento de logs e geração de estatísticas diversas.
Repositório
É o local aonde estão contidos todos os arquivos do projeto.
Trunk
O Trunk sempre representa a última versão de desenvolvimento disponível. Nele deve ocorrer a integração do projeto a partir de builds automatizados (Hudson) e é aqui que a versão mais recente deve estar presente.
Branch/Tag
Refere-se à geração de branches ou tags a partir de um Trunk ou geração de um branch a partir de uma tag ou outro branch. Isso é uma ramificação da árvore do SVN, ou seja ela anda em paralelo ao desenvolvimento do Trunk, sendo assim as mudanças feitas num determinado branch não são refletidas no Trunk e vice-versa. Isso permite que versões paralelas sejam desenvolvidas no mesmo repositório.
Merge
Refere-se à mesclar revisões entre os Branchs e Trunk. Permitindo assim que as mudanças sejam levadas do Branch para o Trunk, para fazer uma reintegração por exemplo.
Switch
Alteração de repositório utilizado por uma Working Copy. Assim é possível fazer uma Working Copy apontar para outro Branch.
Como fazer o Merge usando o Eclipse 3.6
Esse método é mais prático quando tem muitas alterações e existem grande possibilidade de haver conflito, já que é mais fácil resolver conflitos usando o eclipse. Iremos revisar passo a passo como fazer o merge de um commit feito no Branch para o Trunk.
O primeiro passo é fazer o Commit no Branch, é muito importante nesse ponto escrever em algum lugar (txt ou papel) os projetos que você fez commit e quais revisões. Essas informações serão necessárias posteriormente para fazer o merge.
A maneira mais fácil é manter 2 workspaces um apontando para o Trunk e outro para o Branch. Se estiver está trabalhando remoto, para evitar o tempo de baixar
Veremos abaixo um exemplo de um como fazer o Merge de uma mudança do Branch para o Trunk.
- As alterações devem ser feita no _Workspace_ que está apontando para o Branch, vejam o endereço que aparece no Project Explorer.
- Para fazer o teste criei um arquivo chamado ArquivoTeste.txt no projeto lib, fazer o Syncronize normalmente.
- O commit é feito normalmente, lembrando mais uma vez que estamos fazendo o commit no Branch. Lembre-se de anotar a revisão que foi feito o commit, essa informação ser útil nos próximos passos.
- Agora vamos para o _Workspace_ que esta apontando para o *Trunk*, como esperado, mesmo fazendo um Syncronize o arquivo novo não aparece no Trunk?:
- No projeto que deseja fazer o merge, clique direito –> Team –> Merge
- Na tela de Merge selecionar o primeira opção e se quiser desmarcar os checks de merge, isso depende da opção de cada um.
- Agora temos de informar qual o Branch de onde queremos trazer as alterações, tomar cuidado para fazer o merge apenas da sua revisão.
- Marque apenas as suas revisões, pode ser mais de uma se necessário.
- A próxima tela perguntas as opções para resolver os conflitos. O default é ir perguntando o que você quer fazer, pode usar essa opção mesmo. Então basta selecionar o Finish
- Será exibido uma tela de resultado do Merge, mostrando quantos arquivos foram adicionados ou alterados.
- Quando esse Merge é feito as alterações do Branch são aplicadas na sua Working Copy, agora basta fazer um Syncronize e realizar o Commit no Trunk como feito normalmente.










